From b64aa08a8bf3704c77e49914938f2fd6648b824c Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sat, 29 Aug 2026 20:01:37 +0800 Subject: [PATCH 01/16] feat: add deterministic normalized v3 data path --- .gitattributes | 2 + .gitignore | 4 + README.md | 6 +- docs/m7-data-performance.md | 91 + pyproject.toml | 9 +- requirements.lock | 6 + src/quant_data_kit/__init__.py | 5 +- src/quant_data_kit/_version.py | 3 + src/quant_data_kit/adapters_v2/base.py | 16 + src/quant_data_kit/adapters_v2/okx.py | 69 +- src/quant_data_kit/data_lake.py | 149 +- src/quant_data_kit/l2_replay.py | 148 +- src/quant_data_kit/normalized_v3.py | 2700 +++++++++++++++++ tests/fixtures/providers/index.json | 2 +- tests/test_adapters_v2.py | 77 +- tests/test_benchmark_normalized_l2.py | 40 + tests/test_integrity_branch_gates.py | 341 ++- tests/test_l2_replay.py | 75 + tests/test_m2_integration.py | 10 +- tests/test_m2_process_integrity.py | 36 +- tests/test_normalized_v3.py | 576 ++++ tests/test_normalized_v3_failures.py | 1103 +++++++ tools/benchmark_normalized_l2.py | 596 ++++ tools/check_branch_coverage.py | 1 + .../performance/m7-data-arrow-100k-a.json | 239 ++ .../performance/m7-data-arrow-100k-b.json | 251 ++ .../performance/m7-data-arrow-100k-c.json | 251 ++ .../performance/m7-data-arrow-100k-d.json | 251 ++ .../performance/m7-data-arrow-100k-e.json | 251 ++ .../m7-data-arrow-10m-final-okx-contract.json | 703 +++++ .../performance/m7-data-arrow-10m-final.json | 703 +++++ .../performance/m7-data-arrow-1m-a.json | 239 ++ .../performance/m7-data-arrow-1m-c.json | 251 ++ .../performance/m7-data-arrow-1m-d.json | 251 ++ .../performance/m7-data-arrow-1m-e.json | 451 +++ .../m7-data-arrow-1m-independent.json | 700 +++++ .../m7-data-calibration-100k-b.json | 183 ++ .../m7-data-calibration-100k-c.json | 217 ++ .../m7-data-calibration-100k-d.json | 217 ++ .../m7-data-calibration-100k-e.json | 217 ++ .../m7-data-calibration-100k-f.json | 225 ++ .../m7-data-calibration-100k-g.json | 237 ++ .../m7-data-calibration-100k-h.json | 425 +++ .../performance/m7-data-calibration-100k.json | 1383 +++++++++ .../performance/m7-data-calibration-1m-b.json | 217 ++ .../performance/m7-data-calibration-1m.json | 217 ++ .../performance/m7-data-profile-20k.json | 1383 +++++++++ 47 files changed, 15441 insertions(+), 86 deletions(-) create mode 100644 .gitattributes create mode 100644 docs/m7-data-performance.md create mode 100644 src/quant_data_kit/_version.py create mode 100644 src/quant_data_kit/normalized_v3.py create mode 100644 tests/test_benchmark_normalized_l2.py create mode 100644 tests/test_normalized_v3.py create mode 100644 tests/test_normalized_v3_failures.py create mode 100644 tools/benchmark_normalized_l2.py create mode 100644 validation/performance/m7-data-arrow-100k-a.json create mode 100644 validation/performance/m7-data-arrow-100k-b.json create mode 100644 validation/performance/m7-data-arrow-100k-c.json create mode 100644 validation/performance/m7-data-arrow-100k-d.json create mode 100644 validation/performance/m7-data-arrow-100k-e.json create mode 100644 validation/performance/m7-data-arrow-10m-final-okx-contract.json create mode 100644 validation/performance/m7-data-arrow-10m-final.json create mode 100644 validation/performance/m7-data-arrow-1m-a.json create mode 100644 validation/performance/m7-data-arrow-1m-c.json create mode 100644 validation/performance/m7-data-arrow-1m-d.json create mode 100644 validation/performance/m7-data-arrow-1m-e.json create mode 100644 validation/performance/m7-data-arrow-1m-independent.json create mode 100644 validation/performance/m7-data-calibration-100k-b.json create mode 100644 validation/performance/m7-data-calibration-100k-c.json create mode 100644 validation/performance/m7-data-calibration-100k-d.json create mode 100644 validation/performance/m7-data-calibration-100k-e.json create mode 100644 validation/performance/m7-data-calibration-100k-f.json create mode 100644 validation/performance/m7-data-calibration-100k-g.json create mode 100644 validation/performance/m7-data-calibration-100k-h.json create mode 100644 validation/performance/m7-data-calibration-100k.json create mode 100644 validation/performance/m7-data-calibration-1m-b.json create mode 100644 validation/performance/m7-data-calibration-1m.json create mode 100644 validation/performance/m7-data-profile-20k.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..24df9f3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +tests/fixtures/providers/*.json text eol=lf +tests/fixtures/providers/**/*.json text eol=lf diff --git a/.gitignore b/.gitignore index b5a25f4..d60f4aa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,12 @@ __pycache__/ *.py[cod] .venv/ +.venv-m7-verify/ +.m7/ +validation/performance/work-*/ .pytest_cache/ .coverage +coverage.json *.egg-info/ data/ dist/ diff --git a/README.md b/README.md index 56e9d79..585b644 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,10 @@ move or rebuild a release tag to repair a dependency resolution. | `l2_replay` | Deterministic Snapshot+Delta reconstruction, sequence/cross checks and checkpoint hashes | | `adapters_v2` | Binance, OKX and supplier-neutral domestic desensitized fixture adapters | +The M7 Arrow batch entrypoint, bounded-memory validation architecture, benchmark scope, and +the explicit gap between frozen fixtures and current OKX/Binance live-book semantics are documented +in [`docs/m7-data-performance.md`](docs/m7-data-performance.md). + ## M2 data-lake guarantees - Raw persists exact provider bytes through lake-local staging and atomic rename. Its integrity anchor binds source, request, UTC collection time, object/key path identity, SHA-256 and the30-day retention policy. A crash-released process lock and immutable key claim make concurrent writes, crash recovery and cleanup serialize on the same idempotency key. Every write, read and cleanup rejects path escapes and Windows reparse points below the lake root. @@ -90,7 +94,7 @@ move or rebuild a release tag to repair a dependency resolution. ## M2 fixture certification scope -For both Binance and OKX, the certified fixture set is deliberately narrow: BTC spot covers Trade、BBO、BookSnapshot和BookDelta; ETH spot covers Trade only; BTC and ETH perpetuals cover FundingRate and MarkPrice only. It does not claim every event type for all four instruments. OKX books use the provider's signed CRC32 checksum; Binance has no equivalent field, so its gate is U/u/pu continuity plus immutable Raw SHA-256. The domestic supplier-neutral L2 fixture is deliberately marked`fixture-certified-not-market-data-certified`; it must not be described as real domestic market-data certification. +For both Binance and OKX, the certified fixture set is deliberately narrow: BTC spot covers Trade、BBO、BookSnapshot和BookDelta; ETH spot covers Trade only; BTC and ETH perpetuals cover FundingRate and MarkPrice only. It does not claim every event type for all four instruments. The bundled OKX nonzero signed-CRC32 book sample is a historical golden fixture only: since 2026-06-23 the live JSON field is fixed to0 and is not an integrity gate. A current OKX collector must use TLS, enforce`seqId/prevSeqId`continuity, consume empty equal-sequence heartbeats without emitting`BookDelta`, and terminate admission on maintenance resets until a fresh snapshot. This package does not open a network feed and therefore does not certify those live-transport requirements. Binance has no equivalent checksum field, so its fixture gate is U/u/pu continuity plus immutable Raw SHA-256. The domestic supplier-neutral L2 fixture is deliberately marked`fixture-certified-not-market-data-certified`; it must not be described as real domestic market-data certification. ## PIT rules diff --git a/docs/m7-data-performance.md b/docs/m7-data-performance.md new file mode 100644 index 0000000..a6a7d94 --- /dev/null +++ b/docs/m7-data-performance.md @@ -0,0 +1,91 @@ +# M7 Arrow normalization and market-feed boundary + +## Public entrypoints + +- `write_normalized_events(...)` remains the compatibility API for + `Iterable[Mapping]`. It preserves stream-level quarantine behavior. +- `write_normalized_batches(...)` accepts `Iterable[pyarrow.RecordBatch]` or a + `pyarrow.RecordBatchReader`. Every non-empty batch must have the exact frozen + v2 Arrow schema and be homogeneous by event type, instrument, and trading day. + Invalid batch input fails the normalization transaction closed; it does not + publish a partial snapshot or a quarantine object. +- The fast L2 path is limited to a vector-proven sequence of same-side, + same-price upserts. Any delete, mixed price/side/action, requested interior + checkpoint, or non-uniform stream uses the serial reconstructor. + +Both entrypoints enforce trusted Raw references, schema and PIT rules, strict +sequence continuity, deterministic L2 reconstruction, duplicate event IDs, +lake-wide event-claim conflicts, capacity stops, immutable publication, and +post-publication verification. + +## Versioned storage algorithms + +Normalized layout `3.0.0` records these independently versioned algorithms: + +- Mapping partitions use `canonical-json-array-v1`, preserving legacy logical + partition hashes. +- Arrow partitions use `arrow-ipc-record-batch-v1`. External loads re-read the + Parquet data and recompute this digest; the manifest never substitutes for + verification. +- Claim indexes use `streaming-parquet-v2` with claim version `3.1.0`. Individual + `event_id_hash`, `event_sha256`, and `claim_sha256` values retain the frozen v2 + canonical JSON definitions. A versioned, order-independent + `sha256-multiset-u64x4-v1` shard digest removes the former unbounded sorted + string aggregation. Physical file hashes and a manifest hash remain mandatory. + +Historical v2 snapshots are not rewritten. A missing v3 claim acceleration file +can be rebuilt from immutable partitions; a changed file or manifest fails closed. + +## 2026 exchange-feed boundary + +This release does not implement real network collectors. The following official +feed semantics are deliberately not folded into the frozen normalized event +contract: + +- OKX deprecated the JSON `checksum` for `books`, `books-l2-tbt`, and + `books50-l2-tbt` on 2026-06-23. The retained field is zero and is not a current + integrity signal. A future live adapter must require TLS `wss` transport and + strict `seqId`/`prevSeqId` processing. Sources: + [checksum deprecation](https://www.okx.com/en-us/help/okx-order-book-channels-checksum-field-deprecation) + and [OKX API v5](https://www.okx.com/docs-v5). +- An OKX no-change heartbeat can have empty `asks`/`bids` and + `seqId == prevSeqId`. It is transport liveness, not a frozen `BookDelta`, and + must not enter the normalized writer. A maintenance reset with + `seqId < prevSeqId` must terminate the current admission transaction, discard + deltas until a fresh snapshot, and start a new normalization transaction. + The current v2 event contract intentionally rejects both equal-sequence deltas + and an in-transaction sequence rollback. +- Binance USDⓈ-M local-book admission must first bridge + `U <= lastUpdateId <= u`, then require each event's `pu` to equal the prior `u`. + Quantities are absolute and zero means deletion. Binance documents that deleting + an absent local price can be normal. A future adapter must treat that raw event + as a measured no-op before emitting normalized deltas, because the current + frozen reconstructor rejects an absent-level delete. Source: + [Binance USDⓈ-M local order book](https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/How-to-manage-a-local-order-book-correctly). +- Existing OKX CRC32 fixture tests remain historical fixture-integrity tests only. + They are not labeled as 2026 OKX market-data certification. + +These adapter policies require a serial contract review before real market-data +certification. They are not reasons to weaken the normalized batch gates. + +## Performance gate + +The formal command runs each repetition in a new Python process. Raw admission +setup is excluded; RecordBatch generation and the complete normalized write are +inside the timed scope. + +```powershell +$env:TEMP = 'H:\PureSaber-M7\temp' +$env:TMP = 'H:\PureSaber-M7\temp' +python tools/benchmark_normalized_l2.py ` + --work-root H:\PureSaber-M7\quant-data-kit-10m ` + --output validation/performance/m7-data-arrow-10m-final.json ` + --rows 10000000 --runs 3 --batch-rows 262144 ` + --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 +``` + +The report records the machine, Python and dependency versions, Git identity, +timed scope, three run results, deterministic artifact fields, C/H/F disk space, +actual temporary directory, and whether generated synthetic data was removed. +The formal run retains all three lake directories under the recorded H-drive +work root; cleanup is a separate, explicit operator decision after evidence review. diff --git a/pyproject.toml b/pyproject.toml index 87060cb..f51d1cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "quant-data-kit" -version = "0.6.1" +dynamic = ["version"] description = "Shared data providers, Parquet cache, and validation for quant research repos" readme = "README.md" license = { text = "MIT" } @@ -15,13 +15,15 @@ dependencies = [ "pyarrow>=14.0", "pyyaml>=6.0", "jsonschema>=4.20", + "jsonschema-rs>=0.30,<1.0", + "orjson>=3.11,<4.0", "duckdb>=1.4,<2.0", "typing-extensions>=4.4", ] [project.optional-dependencies] akshare = ["akshare>=1.12"] -dev = ["coverage>=7.6", "pytest>=7.4", "ruff>=0.9.0"] +dev = ["coverage>=7.6", "psutil>=6.0,<8.0", "pytest>=7.4", "ruff>=0.9.0"] [project.scripts] qdk-validate = "quant_data_kit.cli:main_validate" @@ -31,6 +33,9 @@ qdk-catalog = "quant_data_kit.cli:main_catalog" [tool.setuptools.packages.find] where = ["src"] +[tool.setuptools.dynamic] +version = { attr = "quant_data_kit._version.__version__" } + [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] diff --git a/requirements.lock b/requirements.lock index bece6b1..b5b641f 100644 --- a/requirements.lock +++ b/requirements.lock @@ -18,18 +18,24 @@ iniconfig==2.3.0 # via pytest jsonschema==4.26.0 # via quant-data-kit (pyproject.toml) +jsonschema-rs==0.52.0 + # via quant-data-kit (pyproject.toml) jsonschema-specifications==2025.9.1 # via jsonschema numpy==2.2.6 # via # pandas # quant-data-kit (pyproject.toml) +orjson==3.12.0 + # via quant-data-kit (pyproject.toml) packaging==26.3 # via pytest pandas==2.3.3 # via quant-data-kit (pyproject.toml) pluggy==1.6.0 # via pytest +psutil==7.2.2 + # via quant-data-kit (pyproject.toml) pyarrow==25.0.1 # via quant-data-kit (pyproject.toml) pygments==2.21.0 diff --git a/src/quant_data_kit/__init__.py b/src/quant_data_kit/__init__.py index e53f872..0f8f58d 100644 --- a/src/quant_data_kit/__init__.py +++ b/src/quant_data_kit/__init__.py @@ -1,7 +1,6 @@ """Shared quant data utilities: Parquet cache, calendar, validation, AKShare providers.""" -__version__ = "0.6.0" - +from quant_data_kit._version import __version__ from quant_data_kit.adapters_v2 import ( AdapterContext, AdapterInstrument, @@ -36,6 +35,7 @@ read_normalized_events, require_collection_capacity, validate_raw_reference, + write_normalized_batches, write_normalized_events, write_raw_bytes, ) @@ -199,6 +199,7 @@ "validate_price_frame", "validate_raw_reference", "write_manifest", + "write_normalized_batches", "write_normalized_events", "write_raw_bytes", ] diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py new file mode 100644 index 0000000..5f9c3db --- /dev/null +++ b/src/quant_data_kit/_version.py @@ -0,0 +1,3 @@ +"""Single authoritative package version used by builds and runtime imports.""" + +__version__ = "0.6.1" diff --git a/src/quant_data_kit/adapters_v2/base.py b/src/quant_data_kit/adapters_v2/base.py index 3f88f71..19aad60 100644 --- a/src/quant_data_kit/adapters_v2/base.py +++ b/src/quant_data_kit/adapters_v2/base.py @@ -137,6 +137,22 @@ def snapshot(self, provider_symbol: str, provider_sequence: int) -> int: self._emitted_sequence[provider_symbol] = emitted return emitted + def heartbeat(self, provider_symbol: str, provider_sequence: int) -> None: + """Validate a provider no-change heartbeat without emitting a v2 sequence.""" + if provider_symbol not in self._provider_sequence: + raise ValidationError("provider heartbeat arrived before BookSnapshot") + expected_provider = self._provider_sequence[provider_symbol] + if provider_sequence != expected_provider: + raise ValidationError( + f"provider heartbeat gap: expected sequence={expected_provider}, " + f"actual={provider_sequence}" + ) + + def reset(self, provider_symbol: str) -> None: + """Discard continuity after a provider reset until a fresh snapshot arrives.""" + self._provider_sequence.pop(provider_symbol, None) + self._emitted_sequence.pop(provider_symbol, None) + def delta( self, provider_symbol: str, diff --git a/src/quant_data_kit/adapters_v2/okx.py b/src/quant_data_kit/adapters_v2/okx.py index 8124cc5..4a44ee1 100644 --- a/src/quant_data_kit/adapters_v2/okx.py +++ b/src/quant_data_kit/adapters_v2/okx.py @@ -1,4 +1,4 @@ -"""OKX desensitized fixture adapter for v2 market events.""" +"""OKX fixture adapter with explicit legacy and post-checksum sequence semantics.""" from __future__ import annotations @@ -33,8 +33,12 @@ class OKXFixtureAdapter: - certification_status = "fixture-certified" - integrity_gate = "OKX signed CRC32 books checksum plus trusted Raw SHA-256" + certification_status = "legacy-fixture-certified-not-market-data-certified" + integrity_gate = ( + "current live prerequisite: TLS plus strict seqId/prevSeqId continuity; " + "checksum=0 is not an integrity signal; nonzero signed CRC32 is verified " + "for historical fixtures only; trusted Raw SHA-256 remains mandatory" + ) def __init__(self, context: AdapterContext) -> None: if context.provider != "okx": @@ -42,20 +46,29 @@ def __init__(self, context: AdapterContext) -> None: self.context = context self._book_sequences = BookSequenceNormalizer() self._books: dict[str, dict[str, dict[str, str]]] = {} + self._awaiting_snapshot: set[str] = set() @contextmanager def transaction(self) -> Iterable[None]: books_before = copy.deepcopy(self._books) - with self._book_sequences.transaction(): - try: + awaiting_before = set(self._awaiting_snapshot) + try: + with self._book_sequences.transaction(): yield - except Exception: - self._books = books_before - raise + except Exception: + reset_during_transaction = self._awaiting_snapshot.difference(awaiting_before) + self._books = books_before + self._awaiting_snapshot = awaiting_before + for symbol in reset_during_transaction: + self._books.pop(symbol, None) + self._book_sequences.reset(symbol) + self._awaiting_snapshot.add(symbol) + raise @contextmanager def _book_transaction(self, symbol: str) -> Any: before = copy.deepcopy(self._books.get(symbol)) + awaiting_before = symbol in self._awaiting_snapshot with self._book_sequences.transaction(): try: yield @@ -64,8 +77,17 @@ def _book_transaction(self, symbol: str) -> Any: self._books.pop(symbol, None) else: self._books[symbol] = before + if awaiting_before: + self._awaiting_snapshot.add(symbol) + else: + self._awaiting_snapshot.discard(symbol) raise + def _require_fresh_snapshot(self, symbol: str) -> None: + self._books.pop(symbol, None) + self._book_sequences.reset(symbol) + self._awaiting_snapshot.add(symbol) + @staticmethod def _signed_crc32(value: str) -> int: checksum = zlib.crc32(value.encode("utf-8")) @@ -105,8 +127,12 @@ def _apply_book_message( book[field].pop(price, None) else: book[field][price] = quantity - if cls._checksum(book) != int(message["checksum"]): - raise ValidationError("OKX books checksum mismatch") + try: + checksum = int(message["checksum"]) + except (KeyError, TypeError, ValueError) as exc: + raise ValidationError("OKX books checksum field must be an integer") from exc + if checksum != 0 and cls._checksum(book) != checksum: + raise ValidationError("OKX legacy books CRC32 checksum mismatch") def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: channel = str(message.get("channel", "")) @@ -173,19 +199,36 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: self._book_level(item, instrument, "ask") for item in message["asks"] ), ) + self._awaiting_snapshot.discard(symbol) return [market_event_payload(event)] if channel == "books" and message["action"] == "update": + provider_previous_sequence = int(message["prevSeqId"]) + provider_sequence = int(message["seqId"]) + if provider_sequence < provider_previous_sequence: + self._require_fresh_snapshot(symbol) + raise ValidationError( + "OKX maintenance sequence reset terminated admission; " + "a fresh BookSnapshot is required" + ) with self._book_transaction(symbol): - if symbol not in self._books: + if symbol in self._awaiting_snapshot or symbol not in self._books: raise ValidationError("OKX BookDelta arrived before BookSnapshot") + if provider_sequence == provider_previous_sequence: + if message["bids"] or message["asks"]: + raise ValidationError( + "OKX equal-sequence heartbeat must not contain book levels" + ) + self._apply_book_message(self._books[symbol], message, replace=False) + self._book_sequences.heartbeat(symbol, provider_sequence) + return [] self._apply_book_message(self._books[symbol], message, replace=False) changes = [(BookSide.BID, item) for item in message["bids"]] + [ (BookSide.ASK, item) for item in message["asks"] ] pairs = self._book_sequences.delta( symbol, - provider_previous_sequence=int(message["prevSeqId"]), - provider_sequence=int(message["seqId"]), + provider_previous_sequence=provider_previous_sequence, + provider_sequence=provider_sequence, level_count=len(changes), ) events: list[dict[str, Any]] = [] diff --git a/src/quant_data_kit/data_lake.py b/src/quant_data_kit/data_lake.py index c38a842..e93c67b 100644 --- a/src/quant_data_kit/data_lake.py +++ b/src/quant_data_kit/data_lake.py @@ -11,7 +11,7 @@ import stat import uuid from collections import defaultdict -from collections.abc import Iterable, Mapping +from collections.abc import Iterable, Iterator, Mapping, Sequence from contextlib import ExitStack, contextmanager from dataclasses import asdict, dataclass from datetime import date, datetime, timedelta, timezone @@ -186,6 +186,89 @@ class EventClaimReference: claim_sha256: str +@dataclass(frozen=True) +class EventClaimShardManifest: + shard: str + rows: int + logical_sha256: str + + +@dataclass(frozen=True) +class EventClaimIndexManifest: + format: str + claim_version: str + rows: int + shards: tuple[EventClaimShardManifest, ...] + + +@dataclass(frozen=True) +class L2CheckpointManifest: + source: str + instrument_id: str + session_id: str + sequence: int + state_sha256: str + + +class EventClaimSequence(Sequence[EventClaimReference]): + """Lazy, immutable view of one normalized-v3 sharded claim index.""" + + def __init__( + self, + root: Path, + snapshot_id: str, + index: EventClaimIndexManifest, + ) -> None: + self._root = Path(root) + self._snapshot_id = snapshot_id + self._index = index + + def __len__(self) -> int: + return self._index.rows + + def __iter__(self) -> Iterator[EventClaimReference]: + from quant_data_kit.normalized_v3 import iter_event_claims_v3 + + return iter_event_claims_v3(self._root, self._snapshot_id, self._index) + + def __getitem__( + self, index: int | slice + ) -> EventClaimReference | tuple[EventClaimReference, ...]: + if isinstance(index, slice): + start, stop, step = index.indices(len(self)) + if step < 0: + requested = range(start, stop, step) + positions = set(requested) + selected = { + position: claim for position, claim in enumerate(self) if position in positions + } + return tuple(selected[position] for position in requested) + selected: list[EventClaimReference] = [] + for position, claim in enumerate(self): + if position >= stop: + break + if position >= start and (position - start) % step == 0: + selected.append(claim) + return tuple(selected) + position = index if index >= 0 else len(self) + index + if position < 0 or position >= len(self): + raise IndexError(index) + for current, claim in enumerate(self): + if current == position: + return claim + raise IndexError(index) + + def __eq__(self, other: object) -> bool: + if self is other: + return True + if not isinstance(other, Sequence) or len(self) != len(other): + return False + return all(left == right for left, right in zip(self, other, strict=True)) + + def __repr__(self) -> str: + return f"EventClaimSequence(snapshot_id={self._snapshot_id!r}, rows={self._index.rows})" + + @dataclass(frozen=True) class NormalizedSnapshot: schema_version: str @@ -197,8 +280,12 @@ class NormalizedSnapshot: logical_sha256: str rows: int upstream_raw_references: tuple[RawObjectReference, ...] - event_claims: tuple[EventClaimReference, ...] + event_claims: Sequence[EventClaimReference] partitions: tuple[PartitionManifest, ...] + layout_version: str = "2.0.0" + partition_logical_hash_version: str = "canonical-json-array-v1" + event_claim_index: EventClaimIndexManifest | None = None + l2_checkpoints: tuple[L2CheckpointManifest, ...] = () @dataclass(frozen=True) @@ -1435,7 +1522,7 @@ def _write_quarantine( shutil.rmtree(stage) -def write_normalized_events( +def _write_normalized_events_legacy( root: Path, records: Iterable[Mapping[str, Any]], *, @@ -1679,6 +1766,54 @@ def write_normalized_events( ) +def write_normalized_events( + root: Path, + records: Iterable[Mapping[str, Any]], + *, + provider: str, + venue: str, + upstream_raw_references: Iterable[RawObjectReference], + expected_l2_checkpoint_hashes: Mapping[tuple[str, str, str], Mapping[int, str]] | None = None, + policy: StoragePolicy = _DEFAULT_STORAGE_POLICY, +) -> NormalizationResult: + """Stream events into the normalized-v3 layout without changing frozen event schemas.""" + from quant_data_kit.normalized_v3 import write_normalized_events_v3 + + return write_normalized_events_v3( + root, + records, + provider=provider, + venue=venue, + upstream_raw_references=upstream_raw_references, + expected_l2_checkpoint_hashes=expected_l2_checkpoint_hashes, + policy=policy, + ) + + +def write_normalized_batches( + root: Path, + batches: Iterable[pa.RecordBatch] | pa.RecordBatchReader, + *, + provider: str, + venue: str, + upstream_raw_references: Iterable[RawObjectReference], + expected_l2_checkpoint_hashes: Mapping[tuple[str, str, str], Mapping[int, str]] | None = None, + policy: StoragePolicy = _DEFAULT_STORAGE_POLICY, +) -> NormalizationResult: + """Write homogeneous, already-standardized Arrow event batches fail closed.""" + from quant_data_kit.normalized_v3 import write_normalized_batches_v3 + + return write_normalized_batches_v3( + root, + batches, + provider=provider, + venue=venue, + upstream_raw_references=upstream_raw_references, + expected_l2_checkpoint_hashes=expected_l2_checkpoint_hashes, + policy=policy, + ) + + def _safe_snapshot_partition(root: Path, snapshot_dir: Path, relative_path: str) -> Path: relative = Path(relative_path) if relative.is_absolute() or ".." in relative.parts: @@ -1712,6 +1847,14 @@ def _load_normalized_snapshot( if not manifest_path.is_file(): raise ValidationError(f"Normalized snapshot manifest missing: {manifest_path}") payload = json.loads(manifest_path.read_text(encoding="utf-8")) + if payload.get("layout_version") == "3.0.0": + from quant_data_kit.normalized_v3 import load_normalized_snapshot_v3 + + return load_normalized_snapshot_v3( + lake_root, + snapshot_id, + payload=payload, + ) payload["upstream_raw_references"] = tuple( RawObjectReference(**item) for item in payload["upstream_raw_references"] ) diff --git a/src/quant_data_kit/l2_replay.py b/src/quant_data_kit/l2_replay.py index fcf3456..d7a6a0e 100644 --- a/src/quant_data_kit/l2_replay.py +++ b/src/quant_data_kit/l2_replay.py @@ -7,6 +7,7 @@ from collections.abc import Iterable, Mapping from dataclasses import asdict, dataclass from datetime import datetime +from functools import lru_cache from typing import Any from quant_data_kit.exceptions import ValidationError @@ -106,6 +107,39 @@ def apply_snapshot(self, event: Mapping[str, Any]) -> BookCheckpoint: def _apply_snapshot_state(self, event: Mapping[str, Any]) -> None: payload = dict(event) validate_json_record(BOOK_SNAPSHOT_EVENT_SCHEMA_ID, payload) + self._apply_validated_snapshot_state(payload) + + def apply_delta(self, event: Mapping[str, Any]) -> BookCheckpoint: + self._apply_delta_state(event) + return self.checkpoint() + + def _apply_delta_state(self, event: Mapping[str, Any]) -> None: + payload = dict(event) + validate_json_record(BOOK_DELTA_EVENT_SCHEMA_ID, payload) + self._apply_validated_delta_state(payload) + + def _apply_without_checkpoint(self, event: Mapping[str, Any]) -> None: + event_type = event.get("event_type") + if event_type == "book_snapshot": + self._apply_snapshot_state(event) + return + if event_type == "book_delta": + self._apply_delta_state(event) + return + raise L2ReplayError(f"Unsupported L2 event_type: {event_type!r}") + + def _apply_validated_without_checkpoint(self, event: Mapping[str, Any]) -> None: + """Apply an event whose frozen JSON schema and PIT semantics already passed.""" + event_type = event["event_type"] + if event_type == "book_snapshot": + self._apply_validated_snapshot_state(event) + return + if event_type == "book_delta": + self._apply_validated_delta_state(event) + return + raise L2ReplayError(f"Unsupported L2 event_type: {event_type!r}") + + def _apply_validated_snapshot_state(self, payload: Mapping[str, Any]) -> None: sequence = int(payload["sequence"]) if self._sequence is not None: self._assert_identity(payload) @@ -133,15 +167,9 @@ def _apply_snapshot_state(self, event: Mapping[str, Any]) -> None: self._bids = bids self._asks = asks - def apply_delta(self, event: Mapping[str, Any]) -> BookCheckpoint: - self._apply_delta_state(event) - return self.checkpoint() - - def _apply_delta_state(self, event: Mapping[str, Any]) -> None: + def _apply_validated_delta_state(self, payload: Mapping[str, Any]) -> None: if not self.initialized: raise L2ReplayError("L2 replay must start from a BookSnapshot") - payload = dict(event) - validate_json_record(BOOK_DELTA_EVENT_SCHEMA_ID, payload) self._assert_identity(payload) sequence = int(payload["sequence"]) previous_sequence = int(payload["previous_sequence"]) @@ -150,8 +178,6 @@ def _apply_delta_state(self, event: Mapping[str, Any]) -> None: f"L2 sequence gap, duplicate, or out-of-order delta: " f"expected previous_sequence={self._sequence}, actual={previous_sequence}" ) - if sequence <= previous_sequence: - raise L2ReplayError("L2 delta sequence must strictly advance") self._assert_time_advances(str(payload["event_time"])) level = _level( { @@ -165,30 +191,91 @@ def _apply_delta_state(self, event: Mapping[str, Any]) -> None: f"L2 delta price scale changed: expected={self._price_scale}, " f"actual={level.price_scale}" ) - bids = dict(self._bids) - asks = dict(self._asks) - side = bids if payload["side"] == "bid" else asks + side = self._bids if payload["side"] == "bid" else self._asks + previous_level = side.get(level.price_units) if payload["action"] == "delete": - if level.price_units not in side: + if previous_level is None: raise L2ReplayError("L2 delete references an absent price level") del side[level.price_units] else: side[level.price_units] = level - self._assert_book_valid(bids, asks) - self._bids = bids - self._asks = asks + try: + self._assert_book_valid(self._bids, self._asks) + except L2ReplayError: + if previous_level is None: + side.pop(level.price_units, None) + else: + side[level.price_units] = previous_level + raise self._sequence = sequence self._event_time = str(payload["event_time"]) - def _apply_without_checkpoint(self, event: Mapping[str, Any]) -> None: - event_type = event.get("event_type") - if event_type == "book_snapshot": - self._apply_snapshot_state(event) - return - if event_type == "book_delta": - self._apply_delta_state(event) - return - raise L2ReplayError(f"Unsupported L2 event_type: {event_type!r}") + def _apply_validated_uniform_upsert_batch( + self, + *, + source: str, + instrument_id: str, + session_id: str, + first_previous_sequence: int, + final_sequence: int, + first_event_time: str, + final_event_time: str, + side: str, + price_units: int, + price_scale: int, + quantity_units: int, + quantity_scale: int, + ) -> None: + """Apply a proven-uniform batch without weakening serial book semantics. + + The caller must already have vector-validated every row, strict sequence + continuity, non-decreasing event time, and positive quantities. Because all + updates target one price on one side and are upserts, only the final quantity + changes retained state; checking the one price against the opposite book is + equivalent to checking every intermediate update. + """ + if not self.initialized: + raise L2ReplayError("L2 replay must start from a BookSnapshot") + identity = (source, instrument_id, session_id) + expected = (self._source, self._instrument_id, self._session_id) + if identity != expected: + raise L2ReplayError( + f"L2 stream identity changed: expected={expected}, actual={identity}" + ) + if first_previous_sequence != self._sequence: + raise L2ReplayError( + "L2 sequence gap, duplicate, or out-of-order delta: " + f"expected previous_sequence={self._sequence}, " + f"actual={first_previous_sequence}" + ) + if final_sequence <= first_previous_sequence: + raise L2ReplayError("L2 delta batch sequence must strictly advance") + self._assert_time_advances(first_event_time) + self._assert_time_advances(final_event_time) + if price_scale != self._price_scale: + raise L2ReplayError( + f"L2 delta price scale changed: expected={self._price_scale}, actual={price_scale}" + ) + level = ReconstructedLevel( + price_units=price_units, + price_scale=price_scale, + quantity_units=quantity_units, + quantity_scale=quantity_scale, + order_count=None, + ) + levels = self._bids if side == "bid" else self._asks + previous_level = levels.get(price_units) + levels[price_units] = level + try: + self._assert_book_valid(self._bids, self._asks) + except L2ReplayError: + if previous_level is None: + levels.pop(price_units, None) + else: + levels[price_units] = previous_level + raise + self._sequence = final_sequence + self._event_time = final_event_time def _assert_identity(self, payload: Mapping[str, Any]) -> None: identity = ( @@ -205,8 +292,10 @@ def _assert_identity(self, payload: Mapping[str, Any]) -> None: def _assert_time_advances(self, event_time: str) -> None: if self._event_time is None: return - previous = datetime.fromisoformat(self._event_time.replace("Z", "+00:00")) - current = datetime.fromisoformat(event_time.replace("Z", "+00:00")) + if event_time == self._event_time: + return + previous = _parsed_timestamp(self._event_time) + current = _parsed_timestamp(event_time) if current < previous: raise L2ReplayError("L2 event_time moved backwards") @@ -246,6 +335,11 @@ def checkpoint(self) -> BookCheckpoint: ) +@lru_cache(maxsize=4096) +def _parsed_timestamp(value: str) -> datetime: + return datetime.fromisoformat(value.replace("Z", "+00:00")) + + def replay_l2( events: Iterable[Mapping[str, Any]], *, diff --git a/src/quant_data_kit/normalized_v3.py b/src/quant_data_kit/normalized_v3.py new file mode 100644 index 0000000..5369296 --- /dev/null +++ b/src/quant_data_kit/normalized_v3.py @@ -0,0 +1,2700 @@ +"""Streaming normalized-v3 storage with recoverable sharded event-claim indexes.""" + +from __future__ import annotations + +import hashlib +import json +import math +import os +import shutil +import uuid +from collections.abc import Iterable, Iterator, Mapping +from contextlib import contextmanager +from dataclasses import asdict, dataclass, field +from datetime import date, datetime +from functools import cache, lru_cache +from itertools import pairwise +from pathlib import Path +from typing import Any + +import duckdb +import jsonschema_rs +import orjson +import pyarrow as pa +import pyarrow.compute as pc +import pyarrow.parquet as pq +from typing_extensions import Self + +from quant_data_kit.data_lake import ( + EventClaimIndexManifest, + EventClaimReference, + EventClaimSequence, + EventClaimShardManifest, + L2CheckpointManifest, + NormalizationResult, + NormalizedSnapshot, + PartitionManifest, + QuarantineEntry, + RawObjectReference, + StoragePolicy, + _canonical_json_bytes, + _event_claim_reference, + _event_schema_id, + _json_evidence, + _lake_lock, + _mkdir_in_lake, + _partition_segment, + _resolved_lake_root, + _safe_snapshot_partition, + _segment, + _sha256_bytes, + _sha256_file, + _stream_key, + _utc_datetime, + _utc_text, + _validate_lake_path, + _validate_quarantine_batch, + require_collection_capacity, + validate_raw_reference, +) +from quant_data_kit.exceptions import ValidationError +from quant_data_kit.l2_replay import L2BookReconstructor, L2ReplayError +from quant_data_kit.process_lock import process_file_lock +from quant_data_kit.schemas_v2 import ( + BOOK_DELTA_EVENT_SCHEMA_ID, + BOOK_SNAPSHOT_EVENT_SCHEMA_ID, + SCHEMA_VERSION_V2, + _validate_record_semantics, + get_arrow_schema, + get_json_schema, + validate_arrow_table, +) + +LAYOUT_VERSION = "3.0.0" +CLAIM_FORMAT = "streaming-parquet-v2" +CLAIM_VERSION = "3.1.0" +CANONICAL_JSON_PARTITION_HASH = "canonical-json-array-v1" +ARROW_IPC_PARTITION_HASH = "arrow-ipc-record-batch-v1" +_BATCH_ROWS = 65_536 +_CAPACITY_CHECK_ROWS = 1_000_000 +_CLAIM_SHARD_PREFIX_LENGTH = 1 +_CLAIM_FILE_SCHEMA = pa.schema( + [ + pa.field("event_id_hash", pa.string()), + pa.field("event_id", pa.string()), + pa.field("schema_id", pa.string()), + pa.field("event_sha256", pa.string()), + pa.field("claim_sha256", pa.string()), + ] +) + +_SortKey = tuple[datetime, int, str] + + +class _ClaimIndexMissingError(ValidationError): + """Raised only when a recoverable claim-index acceleration file is absent.""" + + +@cache +def _native_validator(schema_id: str) -> jsonschema_rs.Draft202012Validator: + return jsonschema_rs.Draft202012Validator( + get_json_schema(schema_id), + validate_formats=True, + ) + + +def _validate_l2_semantics(schema_id: str, payload: Mapping[str, Any]) -> None: + event_time = str(payload["event_time"]) + received_at = str(payload["received_at"]) + available_at = str(payload["available_at"]) + if not (event_time == received_at == available_at): + parsed_event = _utc_datetime(event_time, "event_time") + parsed_received = _utc_datetime(received_at, "received_at") + parsed_available = _utc_datetime(available_at, "available_at") + if parsed_event > parsed_received: + raise ValidationError("received_at must not be earlier than event_time") + if parsed_received > parsed_available: + raise ValidationError("available_at must not be earlier than received_at") + + if schema_id == BOOK_SNAPSHOT_EVENT_SCHEMA_ID: + levels = [*payload["bids"], *payload["asks"]] + if len({int(level["price"]["scale"]) for level in levels}) != 1: + raise ValidationError("book prices must use one scale") + if any(int(level["price"]["units"]) <= 0 for level in levels): + raise ValidationError("price must be positive") + if any(int(level["quantity"]["units"]) < 0 for level in levels): + raise ValidationError("quantity must be non-negative") + bids = [int(level["price"]["units"]) for level in payload["bids"]] + asks = [int(level["price"]["units"]) for level in payload["asks"]] + if bids != sorted(bids, reverse=True) or len(bids) != len(set(bids)): + raise ValidationError("book bids must be strictly ordered without duplicates") + if asks != sorted(asks) or len(asks) != len(set(asks)): + raise ValidationError("book asks must be strictly ordered without duplicates") + if bids[0] >= asks[0]: + raise ValidationError("book snapshot is locked or crossed") + return + + price_units = int(payload["price"]["units"]) + quantity_units = int(payload["quantity"]["units"]) + if price_units <= 0: + raise ValidationError("price must be positive") + if quantity_units < 0: + raise ValidationError("quantity must be non-negative") + if int(payload["previous_sequence"]) >= int(payload["sequence"]): + raise ValidationError("previous_sequence must precede sequence") + if payload["action"] == "delete" and quantity_units != 0: + raise ValidationError("delete delta quantity must be zero") + if payload["action"] == "upsert" and quantity_units == 0: + raise ValidationError("upsert delta quantity must be positive") + + +def _validate_event_record(schema_id: str, payload: dict[str, Any]) -> None: + try: + _native_validator(schema_id).validate(payload) + except jsonschema_rs.ValidationError as exc: + raise ValidationError(f"JSON schema validation failed for {schema_id}: {exc}") from exc + if schema_id in {BOOK_SNAPSHOT_EVENT_SCHEMA_ID, BOOK_DELTA_EVENT_SCHEMA_ID}: + _validate_l2_semantics(schema_id, payload) + else: + _validate_record_semantics(schema_id, payload) + + +@lru_cache(maxsize=4096) +def _cached_timestamp(value: str) -> datetime: + return _utc_datetime(value, "event_timestamp") + + +@lru_cache(maxsize=1024) +def _cached_date(value: str) -> date: + return date.fromisoformat(value) + + +@lru_cache(maxsize=4096) +def _cached_utc_text(value: datetime, field_name: str) -> str: + return _utc_text(value, field_name) + + +@lru_cache(maxsize=1024) +def _cached_date_text(value: date) -> str: + return value.isoformat() + + +def _arrow_ready_rows(schema: pa.Schema, rows: list[dict[str, Any]]) -> list[dict[str, Any]]: + prepared: list[dict[str, Any]] = [] + timestamp_names = {field.name for field in schema if pa.types.is_timestamp(field.type)} + date_names = {field.name for field in schema if pa.types.is_date32(field.type)} + for row in rows: + item = dict(row) + for name in timestamp_names: + value = item[name] + if value is not None and not isinstance(value, datetime): + item[name] = _cached_timestamp(str(value)) + for name in date_names: + value = item[name] + if value is not None and not isinstance(value, date): + item[name] = _cached_date(str(value)) + prepared.append(item) + return prepared + + +class _InputSpool: + def __init__(self, path: Path) -> None: + self.path = path + self._stream = path.open("xb") + self._buffer: list[dict[str, Any]] = [] + self._requires_evidence_encoding = False + + def append(self, record: dict[str, Any], *, requires_evidence_encoding: bool = False) -> None: + self._buffer.append(record) + self._requires_evidence_encoding |= requires_evidence_encoding + if len(self._buffer) >= _BATCH_ROWS: + self.flush() + + def flush(self) -> None: + if not self._buffer: + return + try: + body = ( + orjson.dumps( + [_json_evidence(record) for record in self._buffer], + option=orjson.OPT_SORT_KEYS, + ) + if self._requires_evidence_encoding + else orjson.dumps(self._buffer, option=orjson.OPT_SORT_KEYS) + ) + except (TypeError, orjson.JSONEncodeError): + body = orjson.dumps( + [_json_evidence(record) for record in self._buffer], + option=orjson.OPT_SORT_KEYS, + ) + self._stream.write(body) + self._stream.write(b"\n") + self._buffer.clear() + self._requires_evidence_encoding = False + + def close(self) -> None: + self.flush() + self._stream.flush() + os.fsync(self._stream.fileno()) + self._stream.close() + + def __enter__(self) -> Self: + return self + + def __exit__(self, *_: object) -> None: + self.close() + + +def _iter_spooled_records(path: Path) -> Iterator[dict[str, Any]]: + with path.open("rb") as stream: + for line in stream: + if not line.strip(): + continue + batch = orjson.loads(line) + if not isinstance(batch, list): + raise ValidationError("Normalized input spool batch is malformed") + for record in batch: + if not isinstance(record, dict): + raise ValidationError("Normalized input spool record is malformed") + yield record + + +def _has_non_finite(value: Any) -> bool: + if isinstance(value, float): + return not math.isfinite(value) + if isinstance(value, Mapping): + return any(_has_non_finite(item) for item in value.values()) + if isinstance(value, (list, tuple)): + return any(_has_non_finite(item) for item in value) + return False + + +@dataclass +class _OpenPartition: + key: tuple[str, str, str] + schema_id: str + relative_path: Path + path: Path + buffer: list[dict[str, Any]] + writer: pq.ParquetWriter | None = None + rows: int = 0 + last_sort_key: _SortKey | None = None + monotonic: bool = True + logical_digest: _JsonArrayDigest | None = None + arrow_buffer: list[pa.RecordBatch] = field(default_factory=list) + arrow_buffered_rows: int = 0 + + def append(self, record: dict[str, Any]) -> None: + sort_key = ( + _cached_timestamp(str(record["event_time"])), + int(record["sequence"]), + str(record["event_id"]), + ) + if self.last_sort_key is not None and sort_key < self.last_sort_key: + self.monotonic = False + self.last_sort_key = sort_key + self.buffer.append(record) + + def flush(self) -> int: + if not self.buffer: + return 0 + schema = get_arrow_schema(self.schema_id) + prepared = _arrow_ready_rows(schema, self.buffer) + table = pa.Table.from_pylist(prepared, schema=schema) + validate_arrow_table(self.schema_id, table) + if self.logical_digest is None: + self.logical_digest = _JsonArrayDigest( + preserve_stdlib_float_format=any( + _contains_floating_type(field.type) for field in schema + ) + ) + self.logical_digest.update(_logical_rows(schema, prepared)) + if self.writer is None: + self.path.parent.mkdir(parents=True, exist_ok=True) + self.writer = pq.ParquetWriter( + self.path, + schema, + compression="zstd", + use_dictionary=False, + ) + self.writer.write_table(table, row_group_size=_BATCH_ROWS) + flushed = table.num_rows + self.rows += flushed + self.buffer.clear() + return flushed + + def append_record_batch( + self, + batch: pa.RecordBatch, + *, + first_sort_key: _SortKey, + last_sort_key: _SortKey, + ) -> None: + if self.buffer: + self.flush() + if self.last_sort_key is not None and first_sort_key < self.last_sort_key: + raise ValidationError("Arrow event batches must be globally monotonic per partition") + if last_sort_key < first_sort_key: + raise ValidationError("Arrow event batch sort order moved backwards") + self.last_sort_key = last_sort_key + schema = get_arrow_schema(self.schema_id) + if batch.schema != schema: + raise ValidationError( + f"Arrow schema mismatch for {self.schema_id}: " + f"expected={schema}, actual={batch.schema}" + ) + offset = 0 + while offset < batch.num_rows: + take = min(_BATCH_ROWS - self.arrow_buffered_rows, batch.num_rows - offset) + self.arrow_buffer.append(batch.slice(offset, take)) + self.arrow_buffered_rows += take + offset += take + if self.arrow_buffered_rows == _BATCH_ROWS: + self._flush_arrow_buffer() + + def _flush_arrow_buffer(self) -> None: + if not self.arrow_buffer: + return + schema = get_arrow_schema(self.schema_id) + table = pa.Table.from_batches(self.arrow_buffer, schema=schema).combine_chunks() + batches = table.to_batches(max_chunksize=_BATCH_ROWS) + if len(batches) != 1 or batches[0].num_rows != self.arrow_buffered_rows: + raise ValidationError("Arrow partition buffer did not form one bounded batch") + if self.writer is None: + self.path.parent.mkdir(parents=True, exist_ok=True) + self.writer = pq.ParquetWriter( + self.path, + schema, + compression="zstd", + use_dictionary=False, + ) + self.writer.write_batch(batches[0], row_group_size=_BATCH_ROWS) + self.rows += batches[0].num_rows + self.arrow_buffer.clear() + self.arrow_buffered_rows = 0 + + def close(self) -> None: + self.flush() + self._flush_arrow_buffer() + if self.writer is not None: + self.writer.close() + self.writer = None + + +class _PartitionSet: + def __init__(self, root: Path, provider: str, venue: str) -> None: + self.root = root + self.provider = provider + self.venue = venue + self.partitions: dict[tuple[str, str, str], _OpenPartition] = {} + self.buffered_rows = 0 + + def append(self, record: dict[str, Any]) -> None: + event_type, trading_date, instrument_id, instrument_segment = _partition_identity( + str(record["event_type"]), + str(record["trading_day"]), + str(record["instrument_id"]), + ) + key = (event_type, trading_date, instrument_id) + partition = self.partitions.get(key) + if partition is None: + relative = Path( + f"provider={self.provider}/venue={self.venue}/event_type={event_type}/" + f"date={trading_date}/instrument={instrument_segment}/data.parquet" + ) + partition = _OpenPartition( + key=key, + schema_id=_event_schema_id(record), + relative_path=relative, + path=self.root / relative, + buffer=[], + ) + self.partitions[key] = partition + elif _event_schema_id(record) != partition.schema_id: + raise ValidationError("Mixed schemas entered one normalized partition") + partition.append(record) + self.buffered_rows += 1 + if len(partition.buffer) >= _BATCH_ROWS: + self.buffered_rows -= partition.flush() + elif self.buffered_rows >= _BATCH_ROWS * 2: + self.flush_all() + + def flush_all(self) -> None: + for partition in self.partitions.values(): + self.buffered_rows -= partition.flush() + if self.buffered_rows != 0: + raise ValidationError("Normalized partition buffer accounting changed") + + def append_record_batch( + self, + batch: pa.RecordBatch, + *, + schema_id: str, + event_type: str, + trading_date: str, + instrument_id: str, + first_sort_key: _SortKey, + last_sort_key: _SortKey, + ) -> None: + event_type, trading_date, instrument_id, instrument_segment = _partition_identity( + event_type, + trading_date, + instrument_id, + ) + key = (event_type, trading_date, instrument_id) + partition = self.partitions.get(key) + if partition is None: + relative = Path( + f"provider={self.provider}/venue={self.venue}/event_type={event_type}/" + f"date={trading_date}/instrument={instrument_segment}/data.parquet" + ) + partition = _OpenPartition( + key=key, + schema_id=schema_id, + relative_path=relative, + path=self.root / relative, + buffer=[], + ) + self.partitions[key] = partition + elif schema_id != partition.schema_id: + raise ValidationError("Mixed schemas entered one normalized partition") + partition.append_record_batch( + batch, + first_sort_key=first_sort_key, + last_sort_key=last_sort_key, + ) + + def close(self) -> None: + self.flush_all() + for partition in self.partitions.values(): + partition.close() + + def paths(self) -> tuple[Path, ...]: + return tuple( + self.partitions[key].path + for key in sorted(self.partitions) + if self.partitions[key].rows + ) + + +@lru_cache(maxsize=4096) +def _partition_identity( + event_type: str, + trading_date: str, + instrument_id: str, +) -> tuple[str, str, str, str]: + return ( + _segment(event_type, "event_type"), + _segment(trading_date, "trading_day"), + instrument_id, + _partition_segment(instrument_id, "instrument_id"), + ) + + +@contextmanager +def _streaming_stage(root: Path) -> Iterator[Path]: + staging_root = _mkdir_in_lake(root, root / "normalized" / "staging") + owners_root = _mkdir_in_lake(root, root / "normalized" / ".stage-owners") + for stale in sorted(staging_root.glob("normalized-batch-stream-*")): + checked = _validate_lake_path(root, stale, allow_missing=False) + if not checked.is_dir(): + raise ValidationError(f"Normalized staging entry is not a directory: {checked}") + owner = owners_root / f"{checked.name}.lock" + try: + with process_file_lock(owner, timeout_seconds=0.01): + if checked.exists(): + shutil.rmtree(checked) + except TimeoutError: + continue + operation = uuid.uuid4().hex + stage = staging_root / f"normalized-batch-stream-{operation}" + owner = owners_root / f"{stage.name}.lock" + with process_file_lock(owner): + stage.mkdir(exist_ok=False) + try: + yield stage + finally: + if stage.exists(): + shutil.rmtree(stage) + if owner.exists(): + owner.unlink() + + +def _sql_text(value: str | Path) -> str: + return "'" + str(value).replace("'", "''") + "'" + + +def _sql_path_list(paths: Iterable[Path]) -> str: + return "[" + ",".join(_sql_text(path) for path in paths) + "]" + + +def _sql_identifier(value: str) -> str: + return '"' + value.replace('"', '""') + '"' + + +def _canonical_sql_value(data_type: pa.DataType, expression: str) -> str: + if pa.types.is_timestamp(data_type): + return ( + "CASE WHEN microsecond(" + + expression + + ") % 1000000 = 0 THEN strftime(" + + expression + + ", '%Y-%m-%dT%H:%M:%SZ') ELSE strftime(" + + expression + + ", '%Y-%m-%dT%H:%M:%S.%fZ') END" + ) + if pa.types.is_date32(data_type): + return f"strftime({expression}, '%Y-%m-%d')" + if pa.types.is_struct(data_type): + entries: list[str] = [] + for field in sorted(data_type, key=lambda item: item.name): + child = f"({expression}).{_sql_identifier(field.name)}" + entries.extend( + [ + _sql_text(field.name), + _canonical_sql_value(field.type, child), + ] + ) + return "json_object(" + ",".join(entries) + ")" + if pa.types.is_list(data_type): + child = _canonical_sql_value(data_type.value_type, "claim_item") + return f"list_transform({expression}, claim_item -> {child})" + return expression + + +def _canonical_row_sql(schema_id: str) -> str: + entries: list[str] = [] + for schema_field in sorted(get_arrow_schema(schema_id), key=lambda item: item.name): + entries.extend( + [ + _sql_text(schema_field.name), + _canonical_sql_value(schema_field.type, _sql_identifier(schema_field.name)), + ] + ) + return "json_object(" + ",".join(entries) + ")" + + +def _canonical_event_sql(schema_id: str) -> str: + return ( + "json_object('record'," + + _canonical_row_sql(schema_id) + + ",'schema_id'," + + _sql_text(schema_id) + + ")" + ) + + +def _sort_partition(partition: _OpenPartition) -> None: + if partition.monotonic or partition.rows == 0: + return + sorted_path = partition.path.with_name("data.sorted.parquet") + schema = get_arrow_schema(partition.schema_id) + connection = duckdb.connect(database=":memory:") + writer: pq.ParquetWriter | None = None + try: + connection.execute("SET TimeZone = 'UTC'") + reader = connection.sql( + "SELECT * FROM read_parquet(" + + _sql_text(partition.path) + + ", hive_partitioning=false) " + "ORDER BY event_time, sequence, event_id" + ).to_arrow_reader(_BATCH_ROWS) + writer = pq.ParquetWriter( + sorted_path, + schema, + compression="zstd", + use_dictionary=False, + ) + for batch in reader: + table = pa.Table.from_batches([batch]).cast(schema, safe=True) + validate_arrow_table(partition.schema_id, table) + writer.write_table(table, row_group_size=_BATCH_ROWS) + finally: + if writer is not None: + writer.close() + connection.close() + os.replace(sorted_path, partition.path) + + +class _JsonArrayDigest: + def __init__(self, *, preserve_stdlib_float_format: bool) -> None: + self._digest = hashlib.sha256() + self._digest.update(b"[") + self._has_rows = False + self._preserve_stdlib_float_format = preserve_stdlib_float_format + + def update(self, rows: list[dict[str, Any]]) -> None: + if not rows: + return + payload = ( + _canonical_json_bytes(rows) + if self._preserve_stdlib_float_format + else orjson.dumps(rows, option=orjson.OPT_SORT_KEYS) + ) + if payload[:1] != b"[" or payload[-1:] != b"]": + raise ValidationError("Canonical Arrow batch serialization changed") + body = payload[1:-1] + if self._has_rows: + self._digest.update(b",") + self._digest.update(body) + self._has_rows = True + + def hexdigest(self) -> str: + result = self._digest.copy() + result.update(b"]") + return result.hexdigest() + + +def _logical_rows(schema: pa.Schema, rows: list[dict[str, Any]]) -> list[dict[str, Any]]: + timestamp_names = {field.name for field in schema if pa.types.is_timestamp(field.type)} + date_names = {field.name for field in schema if pa.types.is_date32(field.type)} + normalized: list[dict[str, Any]] = [] + for row in rows: + item = dict(row) + for name in timestamp_names: + value = item[name] + if value is not None: + item[name] = _cached_utc_text(value, name) + for name in date_names: + value = item[name] + if value is not None: + item[name] = _cached_date_text(value) + normalized.append(item) + return normalized + + +def _contains_floating_type(data_type: pa.DataType) -> bool: + if pa.types.is_floating(data_type): + return True + if pa.types.is_struct(data_type): + return any(_contains_floating_type(field.type) for field in data_type) + if pa.types.is_list(data_type): + return _contains_floating_type(data_type.value_type) + return False + + +def _scan_partition( + path: Path, + schema_id: str, +) -> tuple[int, str]: + schema = get_arrow_schema(schema_id) + parquet = pq.ParquetFile(path) + try: + if parquet.schema_arrow != schema: + raise ValidationError( + f"Arrow schema mismatch for {schema_id}: " + f"expected={schema}, actual={parquet.schema_arrow}" + ) + if not any(_contains_floating_type(field.type) for field in schema): + expected_rows = parquet.metadata.num_rows + parquet.close() + connection = duckdb.connect(database=":memory:") + try: + connection.execute("SET TimeZone = 'UTC'") + connection.execute("SET threads = 8") + connection.execute("SET preserve_insertion_order = true") + reader = connection.sql( + "SELECT " + + _canonical_row_sql(schema_id) + + " AS canonical_row FROM read_parquet(?, hive_partitioning=false)", + params=[str(path)], + ).to_arrow_reader(_BATCH_ROWS) + digest = hashlib.sha256(b"[") + rows = 0 + first = True + for batch in reader: + values = batch.column(0).to_pylist() + if not first: + digest.update(b",") + digest.update(",".join(values).encode("utf-8")) + first = False + rows += len(values) + digest.update(b"]") + finally: + connection.close() + if rows != expected_rows: + raise ValidationError("Normalized Parquet row count changed during scan") + return rows, digest.hexdigest() + rows = 0 + logical = _JsonArrayDigest(preserve_stdlib_float_format=True) + for batch in parquet.iter_batches(batch_size=_BATCH_ROWS): + table = pa.Table.from_batches([batch]) + validate_arrow_table(schema_id, table) + batch_rows = table.to_pylist() + logical.update(_logical_rows(schema, batch_rows)) + rows += table.num_rows + return rows, logical.hexdigest() + finally: + parquet.close() + + +def _scan_partition_arrow_ipc(path: Path, schema_id: str) -> tuple[int, str]: + schema = get_arrow_schema(schema_id) + parquet = pq.ParquetFile(path) + digest = hashlib.sha256() + digest.update(b"puresaber:arrow-ipc-record-batch-v1\0") + schema_bytes = schema.serialize().to_pybytes() + digest.update(len(schema_bytes).to_bytes(8, "big")) + digest.update(schema_bytes) + rows = 0 + try: + if parquet.schema_arrow != schema: + raise ValidationError( + f"Arrow schema mismatch for {schema_id}: " + f"expected={schema}, actual={parquet.schema_arrow}" + ) + for batch in parquet.iter_batches(batch_size=_BATCH_ROWS): + payload = batch.serialize().to_pybytes() + digest.update(len(payload).to_bytes(8, "big")) + digest.update(payload) + rows += batch.num_rows + finally: + parquet.close() + digest.update(rows.to_bytes(8, "big")) + return rows, digest.hexdigest() + + +def _partition_manifests( + partitions: _PartitionSet, + *, + provider: str, + venue: str, + logical_hash_version: str = CANONICAL_JSON_PARTITION_HASH, +) -> tuple[PartitionManifest, ...]: + manifests: list[PartitionManifest] = [] + for key in sorted(partitions.partitions): + partition = partitions.partitions[key] + _sort_partition(partition) + if logical_hash_version == ARROW_IPC_PARTITION_HASH: + rows, logical_sha256 = _scan_partition_arrow_ipc( + partition.path, + partition.schema_id, + ) + elif logical_hash_version != CANONICAL_JSON_PARTITION_HASH: + raise ValidationError( + f"Unknown normalized partition logical hash: {logical_hash_version}" + ) + elif partition.monotonic and partition.logical_digest is not None: + parquet = pq.ParquetFile(partition.path) + try: + if parquet.schema_arrow != get_arrow_schema(partition.schema_id): + raise ValidationError("Normalized streaming partition schema changed") + rows = parquet.metadata.num_rows + finally: + parquet.close() + logical_sha256 = partition.logical_digest.hexdigest() + else: + rows, logical_sha256 = _scan_partition(partition.path, partition.schema_id) + if rows != partition.rows: + raise ValidationError("Normalized streaming partition row count changed") + event_type, trading_date, instrument_id = key + manifests.append( + PartitionManifest( + relative_path=partition.relative_path.as_posix(), + provider=provider, + venue=venue, + event_type=event_type, + trading_date=trading_date, + instrument_id=instrument_id, + schema_id=partition.schema_id, + rows=rows, + logical_sha256=logical_sha256, + content_sha256=_sha256_file(partition.path), + ) + ) + return tuple(manifests) + + +def _duplicate_event_ids(paths: tuple[Path, ...]) -> set[str]: + if not paths: + return set() + connection = duckdb.connect(database=":memory:") + try: + query = ( + "SELECT event_id FROM read_parquet(" + + _sql_path_list(paths) + + ", union_by_name=true, hive_partitioning=false) " + "GROUP BY event_id HAVING count(*) > 1" + ) + return {str(row[0]) for row in connection.execute(query).fetchall()} + finally: + connection.close() + + +def _publish_quarantine_file( + root: Path, + source_path: Path, + *, + provider: str, + venue: str, + rows: int, + policy: StoragePolicy, +) -> Path | None: + if rows == 0: + return None + content_sha256 = _sha256_file(source_path) + batch_id = f"sha256-{content_sha256}" + batch_dir = root / "quarantine" / batch_id + manifest = { + "schema_version": "2.0.0", + "layer": "quarantine", + "batch_id": batch_id, + "provider": provider, + "venue": venue, + "rows": rows, + "content_sha256": content_sha256, + "data_path": "records.jsonl", + } + manifest_bytes = json.dumps(manifest, indent=2, ensure_ascii=False).encode("utf-8") + with _lake_lock(root, "quarantine-batch", {"batch_id": batch_id}): + if batch_dir.exists(): + return _validate_quarantine_batch(root, batch_dir, manifest) + require_collection_capacity( + root, + projected_write_bytes=source_path.stat().st_size + len(manifest_bytes), + policy=policy, + ) + staging_root = _mkdir_in_lake(root, root / "quarantine" / ".staging") + stage = staging_root / f"{batch_id}-{uuid.uuid4().hex}" + stage.mkdir(exist_ok=False) + try: + with source_path.open("rb") as source, (stage / "records.jsonl").open("wb") as target: + shutil.copyfileobj(source, target, length=1024 * 1024) + target.flush() + os.fsync(target.fileno()) + (stage / "manifest.json").write_bytes(manifest_bytes) + _validate_quarantine_batch(root, stage, manifest) + _mkdir_in_lake(root, batch_dir.parent) + os.replace(stage, batch_dir) + return _validate_quarantine_batch(root, batch_dir, manifest) + finally: + if stage.exists(): + shutil.rmtree(stage) + + +def _rebuild_after_exclusions( + snapshot_root: Path, + spool_path: Path, + *, + provider: str, + venue: str, + invalid_streams: Mapping[tuple[str, str, str], str], + duplicate_event_ids: set[str], + quarantine_path: Path, +) -> tuple[_PartitionSet, int, int, str | None]: + if snapshot_root.exists(): + shutil.rmtree(snapshot_root) + snapshot_root.mkdir() + partitions = _PartitionSet(snapshot_root, provider, venue) + accepted = 0 + quarantined = 0 + latest_available: datetime | None = None + with quarantine_path.open("xb") as quarantine: + for index, record in enumerate(_iter_spooled_records(spool_path)): + event_id = record.get("event_id") + if isinstance(event_id, str) and event_id in duplicate_event_ids: + reason = "global_duplicate_event_id" + else: + reason = invalid_streams.get(_stream_key(record, index)) + if reason is None: + partitions.append(record) + accepted += 1 + available = _utc_datetime(record["available_at"], "available_at") + if latest_available is None or available > latest_available: + latest_available = available + continue + entry = QuarantineEntry( + input_index=index, + reason=reason, + record=record, + ) + quarantine.write(_canonical_json_bytes(_json_evidence(asdict(entry)))) + quarantine.write(b"\n") + quarantined += 1 + quarantine.flush() + os.fsync(quarantine.fileno()) + partitions.close() + created_at = _utc_text(latest_available, "available_at") if latest_available else None + return partitions, accepted, quarantined, created_at + + +def _claim_database( + database_path: Path, + snapshot_root: Path, + partitions: tuple[PartitionManifest, ...], +) -> duckdb.DuckDBPyConnection: + temporary_root = database_path.with_suffix(".tmp") + temporary_root.mkdir(parents=True, exist_ok=True) + connection = duckdb.connect(database=str(database_path)) + connection.execute("SET TimeZone = 'UTC'") + connection.execute("SET threads = 8") + connection.execute("SET memory_limit = '2GB'") + connection.execute("SET temp_directory = " + _sql_text(temporary_root)) + connection.execute( + "CREATE TABLE claims (" + "shard VARCHAR NOT NULL, event_id_hash VARCHAR NOT NULL, " + "event_id VARCHAR NOT NULL, schema_id VARCHAR NOT NULL, " + "event_sha256 VARCHAR NOT NULL, claim_sha256 VARCHAR NOT NULL)" + ) + for partition in partitions: + path = snapshot_root / partition.relative_path + schema = get_arrow_schema(partition.schema_id) + if any(_contains_floating_type(field.type) for field in schema): + parquet = pq.ParquetFile(path) + try: + for batch in parquet.iter_batches(batch_size=_BATCH_ROWS): + rows = _logical_rows(schema, pa.Table.from_batches([batch]).to_pylist()) + claims = [_event_claim_reference(partition.schema_id, row) for row in rows] + connection.executemany( + "INSERT INTO claims VALUES (?, ?, ?, ?, ?, ?)", + [ + ( + claim.event_id_hash[:_CLAIM_SHARD_PREFIX_LENGTH], + claim.event_id_hash, + claim.event_id, + claim.schema_id, + claim.event_sha256, + claim.claim_sha256, + ) + for claim in claims + ], + ) + finally: + parquet.close() + continue + canonical_event = _canonical_event_sql(partition.schema_id) + connection.execute( + "INSERT INTO claims " + "WITH event_rows AS (" + "SELECT event_id, sha256(event_id) AS event_id_hash, " + "sha256(" + canonical_event + ") AS event_sha256 " + "FROM read_parquet(?, hive_partitioning=false) t" + ") " + "SELECT substr(event_id_hash, 1, ?), event_id_hash, event_id, ?, " + "event_sha256, sha256(json_object(" + "'event_id', event_id, 'event_id_hash', event_id_hash, " + "'event_sha256', event_sha256, 'layer', 'normalized-event-claim', " + "'schema_id', ?, 'schema_version', '2.0.0')) FROM event_rows", + [ + str(path), + _CLAIM_SHARD_PREFIX_LENGTH, + partition.schema_id, + partition.schema_id, + ], + ) + repeated = connection.execute( + "SELECT event_id_hash, min(event_id), max(event_id), count(*) FROM claims " + "GROUP BY event_id_hash HAVING count(*) > 1 LIMIT 1" + ).fetchone() + if repeated is not None: + connection.close() + if repeated[1] != repeated[2]: + raise ValidationError("Normalized batch contains colliding event_id hashes") + raise ValidationError( + f"Normalized accepted set still contains duplicate event_id: {repeated[1]}" + ) + return connection + + +def _claim_shard_manifests( + connection: duckdb.DuckDBPyConnection, +) -> tuple[EventClaimShardManifest, ...]: + rows = connection.execute(_claim_multiset_manifest_sql("claims")).fetchall() + return tuple( + EventClaimShardManifest( + shard=str(shard), + rows=int(count), + logical_sha256=str(logical_sha256), + ) + for shard, count, logical_sha256 in rows + ) + + +def _claim_multiset_manifest_sql(source: str) -> str: + chunks = [ + f"cast('0x' || substr(claim_sha256, {offset}, 16) as ubigint)" for offset in (1, 17, 33, 49) + ] + aggregate_fields: list[str] = [ + "'algorithm', 'sha256-multiset-u64x4-v1'", + "'rows', count(*)", + ] + for index, chunk in enumerate(chunks): + aggregate_fields.extend( + [ + _sql_text(f"xor_{index}"), + f"printf('%016x', bit_xor({chunk}))", + _sql_text(f"sum_{index}"), + f"cast(sum(cast({chunk} as hugeint)) as varchar)", + ] + ) + return ( + "SELECT substr(event_id_hash, 1, " + + str(_CLAIM_SHARD_PREFIX_LENGTH) + + ") AS shard, count(*) AS rows, sha256(json_object(" + + ",".join(aggregate_fields) + + ")) AS logical_sha256 FROM " + + source + + " GROUP BY substr(event_id_hash, 1, " + + str(_CLAIM_SHARD_PREFIX_LENGTH) + + ") ORDER BY shard" + ) + + +def _export_claim_index( + connection: duckdb.DuckDBPyConnection, + index_root: Path, + *, + snapshot_id: str, + snapshot_logical_sha256: str, + shards: tuple[EventClaimShardManifest, ...], +) -> None: + if index_root.exists(): + shutil.rmtree(index_root) + index_root.mkdir(parents=True) + connection.execute("SET threads = 1") + connection.execute( + "COPY (SELECT event_id_hash, event_id, schema_id, event_sha256, claim_sha256 " + "FROM claims) TO " + + _sql_text(index_root / "claims.parquet") + + " (FORMAT PARQUET, COMPRESSION ZSTD, ROW_GROUP_SIZE 65536)" + ) + files = [] + for path in sorted(index_root.rglob("*.parquet")): + table = pq.ParquetFile(path).schema_arrow + if table != _CLAIM_FILE_SCHEMA: + raise ValidationError("Normalized event-claim index Arrow schema changed") + files.append( + { + "relative_path": path.relative_to(index_root).as_posix(), + "content_sha256": _sha256_file(path), + } + ) + manifest = { + "schema_version": LAYOUT_VERSION, + "layer": "normalized-event-claim-index", + "snapshot_id": snapshot_id, + "snapshot_logical_sha256": snapshot_logical_sha256, + "format": CLAIM_FORMAT, + "claim_version": CLAIM_VERSION, + "rows": sum(item.rows for item in shards), + "shards": [asdict(item) for item in shards], + "files": files, + } + manifest["manifest_sha256"] = _sha256_bytes(_canonical_json_bytes(manifest)) + (index_root / "manifest.json").write_text( + json.dumps(manifest, indent=2, ensure_ascii=False), + encoding="utf-8", + ) + + +def _claim_select_sql(snapshot_root: Path, partition: PartitionManifest) -> str: + path = snapshot_root / partition.relative_path + canonical_event = _canonical_event_sql(partition.schema_id) + return ( + "SELECT substr(event_id_hash, 1, " + + str(_CLAIM_SHARD_PREFIX_LENGTH) + + ") AS shard, event_id_hash, event_id, " + + _sql_text(partition.schema_id) + + " AS schema_id, event_sha256, sha256(json_object(" + "'event_id', event_id, 'event_id_hash', event_id_hash, " + "'event_sha256', event_sha256, 'layer', 'normalized-event-claim', " + "'schema_id', " + + _sql_text(partition.schema_id) + + ", 'schema_version', '2.0.0')) AS claim_sha256 FROM (" + "SELECT event_id, sha256(event_id) AS event_id_hash, sha256(" + + canonical_event + + ") AS event_sha256 FROM read_parquet(" + + _sql_text(path) + + ", hive_partitioning=false)) event_rows" + ) + + +def _claim_file_order(path: Path) -> tuple[str, int, str]: + suffix = path.stem.rsplit("-", 1)[-1] + return path.parent.name, int(suffix) if suffix.isdigit() else -1, path.name + + +def _claim_shard_manifests_from_paths( + paths: Iterable[Path], +) -> tuple[EventClaimShardManifest, ...]: + all_paths = tuple(paths) + if not all_paths: + return () + for path in sorted(all_paths, key=_claim_file_order): + parquet = pq.ParquetFile(path) + try: + if parquet.schema_arrow != _CLAIM_FILE_SCHEMA: + raise ValidationError("Normalized event-claim index Arrow schema changed") + finally: + parquet.close() + relation = ( + "read_parquet(" + + _sql_path_list(all_paths) + + ", union_by_name=true, hive_partitioning=false)" + ) + connection = duckdb.connect(database=":memory:") + try: + rows = connection.execute(_claim_multiset_manifest_sql(relation)).fetchall() + finally: + connection.close() + return tuple( + EventClaimShardManifest( + shard=str(shard), + rows=int(count), + logical_sha256=str(logical_sha256), + ) + for shard, count, logical_sha256 in rows + ) + + +def _write_claim_index_manifest( + index_root: Path, + *, + snapshot_id: str, + snapshot_logical_sha256: str, + shards: tuple[EventClaimShardManifest, ...], +) -> None: + files = [ + { + "relative_path": path.relative_to(index_root).as_posix(), + "content_sha256": _sha256_file(path), + } + for path in sorted(_claim_index_files(index_root), key=_claim_file_order) + ] + manifest = { + "schema_version": LAYOUT_VERSION, + "layer": "normalized-event-claim-index", + "snapshot_id": snapshot_id, + "snapshot_logical_sha256": snapshot_logical_sha256, + "format": CLAIM_FORMAT, + "claim_version": CLAIM_VERSION, + "rows": sum(item.rows for item in shards), + "shards": [asdict(item) for item in shards], + "files": files, + } + manifest["manifest_sha256"] = _sha256_bytes(_canonical_json_bytes(manifest)) + (index_root / "manifest.json").write_text( + json.dumps(manifest, indent=2, ensure_ascii=False), + encoding="utf-8", + ) + + +def _build_claim_index_files( + snapshot_root: Path, + partitions: tuple[PartitionManifest, ...], + index_root: Path, + temporary_root: Path, +) -> tuple[EventClaimShardManifest, ...]: + if not partitions: + return () + contains_float = any( + _contains_floating_type(field.type) + for partition in partitions + for field in get_arrow_schema(partition.schema_id) + ) + if index_root.exists(): + shutil.rmtree(index_root) + temporary_root.mkdir(parents=True, exist_ok=True) + index_root.mkdir(parents=True) + if contains_float: + connection = _claim_database( + temporary_root / "floating-claims.duckdb", + snapshot_root, + partitions, + ) + try: + connection.execute("SET threads = 1") + connection.execute( + "COPY (SELECT event_id_hash, event_id, schema_id, event_sha256, claim_sha256 " + "FROM claims) TO " + + _sql_text(index_root / "claims.parquet") + + " (FORMAT PARQUET, COMPRESSION ZSTD, ROW_GROUP_SIZE 65536)" + ) + finally: + connection.close() + paths = _claim_index_files(index_root) + if not paths: + raise ValidationError("Normalized event-claim export produced no segments") + return _claim_shard_manifests_from_paths(paths) + connection = duckdb.connect(database=":memory:") + try: + connection.execute("SET TimeZone = 'UTC'") + connection.execute("SET threads = 8") + connection.execute("SET preserve_insertion_order = true") + connection.execute("SET memory_limit = '2GB'") + connection.execute("SET temp_directory = " + _sql_text(temporary_root)) + union = " UNION ALL ".join( + _claim_select_sql(snapshot_root, partition) for partition in partitions + ) + connection.execute( + "COPY (SELECT event_id_hash, event_id, schema_id, event_sha256, claim_sha256 " + "FROM (" + + union + + ") claims) TO " + + _sql_text(index_root / "claims.parquet") + + " (FORMAT PARQUET, COMPRESSION ZSTD, ROW_GROUP_SIZE 65536)" + ) + finally: + connection.close() + paths = _claim_index_files(index_root) + if not paths: + raise ValidationError("Normalized event-claim export produced no segments") + connection = duckdb.connect(database=":memory:") + try: + connection.execute("SET memory_limit = '2GB'") + connection.execute("SET temp_directory = " + _sql_text(temporary_root)) + repeated = connection.execute( + "SELECT event_id_hash FROM read_parquet(?, hive_partitioning=false) " + "GROUP BY event_id_hash HAVING count(*) > 1 LIMIT 1", + [str(index_root / "claims.parquet")], + ).fetchone() + finally: + connection.close() + if repeated is not None: + raise ValidationError("Normalized event-claim index contains duplicate claims") + return _claim_shard_manifests_from_paths(paths) + + +def _claim_index_root(root: Path, snapshot_id: str) -> Path: + return root / "normalized" / "event-claim-index-v3" / f"snapshot={snapshot_id}" + + +def _claim_index_files(index_root: Path) -> tuple[Path, ...]: + return tuple(sorted(index_root.rglob("*.parquet"))) + + +def _validate_claim_index( + root: Path, + snapshot_id: str, + snapshot_logical_sha256: str, + expected: EventClaimIndexManifest, +) -> tuple[Path, ...]: + unresolved_root = _claim_index_root(root, snapshot_id) + if not unresolved_root.exists(): + raise _ClaimIndexMissingError("Normalized event-claim index is missing") + index_root = _validate_lake_path(root, unresolved_root, allow_missing=False) + unresolved_manifest = index_root / "manifest.json" + if not unresolved_manifest.exists(): + raise _ClaimIndexMissingError("Normalized event-claim index manifest is missing") + manifest_path = _validate_lake_path(root, unresolved_manifest, allow_missing=False) + try: + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError("Normalized event-claim index manifest is unreadable") from exc + anchor = manifest.pop("manifest_sha256", None) + if anchor != _sha256_bytes(_canonical_json_bytes(manifest)): + raise ValidationError("Normalized event-claim index manifest integrity changed") + if ( + manifest.get("schema_version") != LAYOUT_VERSION + or manifest.get("layer") != "normalized-event-claim-index" + or manifest.get("snapshot_id") != snapshot_id + or manifest.get("snapshot_logical_sha256") != snapshot_logical_sha256 + or manifest.get("format") != expected.format + or manifest.get("claim_version") != expected.claim_version + or int(manifest.get("rows", -1)) != expected.rows + or tuple(EventClaimShardManifest(**item) for item in manifest.get("shards", [])) + != expected.shards + ): + raise ValidationError("Normalized event-claim index identity changed") + expected_files: set[Path] = {Path("manifest.json")} + parquet_paths: list[Path] = [] + missing_files: list[Path] = [] + for item in manifest.get("files", []): + relative = Path(str(item["relative_path"])) + if relative.is_absolute() or ".." in relative.parts or relative in expected_files: + raise ValidationError("Normalized event-claim index path is unsafe or duplicated") + unresolved_path = index_root / relative + expected_files.add(relative) + if not unresolved_path.exists(): + missing_files.append(relative) + continue + path = _validate_lake_path(root, unresolved_path, allow_missing=False) + if not path.is_file() or _sha256_file(path) != item["content_sha256"]: + raise ValidationError("Normalized event-claim index physical content changed") + if pq.ParquetFile(path).schema_arrow != _CLAIM_FILE_SCHEMA: + raise ValidationError("Normalized event-claim index Arrow schema changed") + parquet_paths.append(path) + actual_files = { + path.relative_to(index_root) for path in index_root.rglob("*") if path.is_file() + } + unexpected_files = actual_files.difference(expected_files) + if unexpected_files: + raise ValidationError("Normalized event-claim index has unexpected or missing files") + if missing_files or actual_files != expected_files: + raise _ClaimIndexMissingError("Normalized event-claim index segment is missing") + if not parquet_paths and expected.rows: + raise _ClaimIndexMissingError("Normalized event-claim index has no claim segments") + + actual_shards = _claim_shard_manifests_from_paths(parquet_paths) + if actual_shards != expected.shards: + raise ValidationError("Normalized event-claim index logical content changed") + return tuple(parquet_paths) + + +def _publish_or_validate_claim_index( + root: Path, + staged_index: Path, + *, + snapshot_id: str, + snapshot_logical_sha256: str, + expected: EventClaimIndexManifest, +) -> tuple[Path, ...]: + final = _claim_index_root(root, snapshot_id) + with _lake_lock(root, "normalized-claim-index", {"snapshot_id": snapshot_id}): + if final.exists(): + try: + return _validate_claim_index( + root, + snapshot_id, + snapshot_logical_sha256, + expected, + ) + except _ClaimIndexMissingError: + evidence_root = _mkdir_in_lake( + root, + root / "normalized" / "event-claim-index-v3" / "recovery-evidence", + ) + evidence = evidence_root / f"{snapshot_id}-{uuid.uuid4().hex}" + os.replace(final, evidence) + os.replace(staged_index, final) + return _validate_claim_index( + root, + snapshot_id, + snapshot_logical_sha256, + expected, + ) + _mkdir_in_lake(root, final.parent) + _validate_lake_path(root, final, allow_missing=True) + os.replace(staged_index, final) + return _validate_claim_index( + root, + snapshot_id, + snapshot_logical_sha256, + expected, + ) + + +def _snapshot_payload_v3( + *, + provider: str, + venue: str, + created_at: str, + upstream_raw_references: tuple[RawObjectReference, ...], + partitions: tuple[PartitionManifest, ...], + event_claim_index: EventClaimIndexManifest, + l2_checkpoints: tuple[L2CheckpointManifest, ...], + partition_logical_hash_version: str = CANONICAL_JSON_PARTITION_HASH, +) -> dict[str, Any]: + return { + "schema_version": SCHEMA_VERSION_V2, + "layout_version": LAYOUT_VERSION, + "layer": "normalized", + "provider": provider, + "venue": venue, + "created_at": created_at, + "partition_logical_hash_version": partition_logical_hash_version, + "upstream_raw_references": [asdict(item) for item in upstream_raw_references], + "partitions": [asdict(item) for item in partitions], + "event_claim_index": asdict(event_claim_index), + "l2_checkpoints": [asdict(item) for item in l2_checkpoints], + } + + +def _index_for_snapshot( + root: Path, + snapshot_root: Path, + partitions: tuple[PartitionManifest, ...], + *, + snapshot_id: str, + snapshot_logical_sha256: str, + expected: EventClaimIndexManifest, +) -> tuple[Path, ...]: + final = _claim_index_root(root, snapshot_id) + verification_root = _mkdir_in_lake( + root, + root / "normalized" / "event-claim-index-v3" / ".staging", + ) + operation = verification_root / f"verify-{uuid.uuid4().hex}" + operation.mkdir(exist_ok=False) + connection: duckdb.DuckDBPyConnection | None = None + try: + connection = _claim_database(operation / "claims.duckdb", snapshot_root, partitions) + actual_shards = _claim_shard_manifests(connection) + actual = EventClaimIndexManifest( + format=CLAIM_FORMAT, + claim_version=CLAIM_VERSION, + rows=sum(item.rows for item in actual_shards), + shards=actual_shards, + ) + if actual != expected: + raise ValidationError("Normalized snapshot event claims changed") + if final.exists(): + try: + return _validate_claim_index( + root, + snapshot_id, + snapshot_logical_sha256, + expected, + ) + except _ClaimIndexMissingError: + pass + staged_index = operation / "index" + _export_claim_index( + connection, + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=snapshot_logical_sha256, + shards=actual_shards, + ) + connection.close() + connection = None + return _publish_or_validate_claim_index( + root, + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=snapshot_logical_sha256, + expected=expected, + ) + finally: + if connection is not None: + connection.close() + if operation.exists(): + shutil.rmtree(operation) + + +def iter_event_claims_v3( + root: Path, + snapshot_id: str, + expected: EventClaimIndexManifest, +) -> Iterator[EventClaimReference]: + snapshot_dir = root / "normalized" / "snapshots" / snapshot_id + manifest = json.loads((snapshot_dir / "manifest.json").read_text(encoding="utf-8")) + paths = _validate_claim_index( + root, + snapshot_id, + str(manifest["logical_sha256"]), + expected, + ) + connection = duckdb.connect(database=":memory:") + try: + reader = connection.execute( + "SELECT event_id_hash, event_id, schema_id, event_sha256, claim_sha256 " + "FROM read_parquet(" + + _sql_path_list(paths) + + ", union_by_name=true, hive_partitioning=false) " + "ORDER BY event_id_hash, event_id" + ).to_arrow_reader(batch_size=_BATCH_ROWS) + for batch in reader: + columns = batch.to_pydict() + for values in zip( + columns["event_id_hash"], + columns["event_id"], + columns["schema_id"], + columns["event_sha256"], + columns["claim_sha256"], + strict=True, + ): + yield EventClaimReference(*map(str, values)) + finally: + connection.close() + + +def _historical_index_paths(root: Path, candidate_snapshot_id: str) -> tuple[Path, ...]: + snapshots_root = root / "normalized" / "snapshots" + paths: list[Path] = [] + if not snapshots_root.exists(): + return () + from quant_data_kit.data_lake import _load_normalized_snapshot + + for snapshot_dir in sorted(snapshots_root.glob("sha256-*")): + if not snapshot_dir.is_dir() or snapshot_dir.name == candidate_snapshot_id: + continue + snapshot = _load_normalized_snapshot( + root, + snapshot_dir.name, + verify_event_claim_files=True, + ) + if snapshot.layout_version != LAYOUT_VERSION or snapshot.event_claim_index is None: + legacy_root = _mkdir_in_lake( + root, + root / "normalized" / "event-claim-index-v3" / ".legacy-staging", + ) + operation = legacy_root / f"legacy-{uuid.uuid4().hex}" + operation.mkdir(exist_ok=False) + connection: duckdb.DuckDBPyConnection | None = None + try: + connection = _claim_database( + operation / "claims.duckdb", + snapshot_dir, + snapshot.partitions, + ) + shards = _claim_shard_manifests(connection) + expected = EventClaimIndexManifest( + CLAIM_FORMAT, + CLAIM_VERSION, + sum(item.rows for item in shards), + shards, + ) + staged = operation / "index" + _export_claim_index( + connection, + staged, + snapshot_id=snapshot.snapshot_id, + snapshot_logical_sha256=snapshot.logical_sha256, + shards=shards, + ) + connection.close() + connection = None + paths.extend( + _publish_or_validate_claim_index( + root, + staged, + snapshot_id=snapshot.snapshot_id, + snapshot_logical_sha256=snapshot.logical_sha256, + expected=expected, + ) + ) + finally: + if connection is not None: + connection.close() + if operation.exists(): + shutil.rmtree(operation) + continue + paths.extend( + _validate_claim_index( + root, + snapshot.snapshot_id, + snapshot.logical_sha256, + snapshot.event_claim_index, + ) + ) + return tuple(paths) + + +def _assert_lake_wide_claims( + root: Path, + candidate_paths: tuple[Path, ...], + *, + candidate_snapshot_id: str, +) -> None: + historical_paths = _historical_index_paths(root, candidate_snapshot_id) + if not historical_paths: + return + connection = duckdb.connect(database=":memory:") + try: + conflict = connection.execute( + "SELECT c.event_id FROM read_parquet(" + + _sql_path_list(candidate_paths) + + ", union_by_name=true, hive_partitioning=false) c " + "JOIN read_parquet(" + + _sql_path_list(historical_paths) + + ", union_by_name=true, hive_partitioning=false) h " + "ON c.event_id_hash = h.event_id_hash " + "WHERE c.event_id <> h.event_id OR c.event_sha256 <> h.event_sha256 LIMIT 1" + ).fetchone() + finally: + connection.close() + if conflict is not None: + raise ValidationError(f"Conflicting lake event_id claim: {conflict[0]}") + + +def load_normalized_snapshot_v3( + root: Path, + snapshot_id: str, + *, + payload: Mapping[str, Any] | None = None, + _trusted_publish: bool = False, +) -> NormalizedSnapshot: + lake_root = _resolved_lake_root(root, create=False) + snapshot_id = _segment(snapshot_id, "snapshot_id") + snapshot_root = _validate_lake_path( + lake_root, + lake_root / "normalized" / "snapshots" / snapshot_id, + allow_missing=False, + ) + manifest_path = _validate_lake_path( + lake_root, + snapshot_root / "manifest.json", + allow_missing=False, + ) + if not manifest_path.is_file(): + raise ValidationError(f"Normalized snapshot manifest missing: {manifest_path}") + manifest = dict( + payload if payload is not None else json.loads(manifest_path.read_text(encoding="utf-8")) + ) + try: + raw_references = tuple( + RawObjectReference(**item) for item in manifest["upstream_raw_references"] + ) + partitions = tuple(PartitionManifest(**item) for item in manifest["partitions"]) + index_payload = dict(manifest["event_claim_index"]) + index_payload["shards"] = tuple( + EventClaimShardManifest(**item) for item in index_payload["shards"] + ) + claim_index = EventClaimIndexManifest(**index_payload) + checkpoints = tuple( + L2CheckpointManifest(**item) for item in manifest.get("l2_checkpoints", []) + ) + except (KeyError, TypeError) as exc: + raise ValidationError("Normalized-v3 snapshot manifest is malformed") from exc + if ( + manifest.get("schema_version") != SCHEMA_VERSION_V2 + or manifest.get("layout_version") != LAYOUT_VERSION + or manifest.get("layer") != "normalized" + or manifest.get("snapshot_id") != snapshot_id + or claim_index.format != CLAIM_FORMAT + or claim_index.claim_version != CLAIM_VERSION + ): + raise ValidationError("Normalized snapshot identity mismatch") + created_at = _utc_text(str(manifest["created_at"]), "created_at") + identity = _snapshot_payload_v3( + provider=str(manifest["provider"]), + venue=str(manifest["venue"]), + created_at=created_at, + upstream_raw_references=raw_references, + partitions=partitions, + event_claim_index=claim_index, + l2_checkpoints=checkpoints, + partition_logical_hash_version=str( + manifest.get( + "partition_logical_hash_version", + CANONICAL_JSON_PARTITION_HASH, + ) + ), + ) + logical_sha256 = _sha256_bytes(_canonical_json_bytes(identity)) + if ( + manifest.get("logical_sha256") != logical_sha256 + or snapshot_id != f"sha256-{logical_sha256}" + ): + raise ValidationError("Normalized snapshot logical hash changed") + provider = str(manifest["provider"]) + venue = str(manifest["venue"]) + for reference in raw_references: + if reference.source != provider: + raise ValidationError("Normalized provider does not match its Raw source") + validate_raw_reference(lake_root, reference, allow_archived=True) + + expected_files: set[Path] = {Path("manifest.json")} + seen_paths: set[str] = set() + actual_rows = 0 + for partition in partitions: + if partition.relative_path in seen_paths: + raise ValidationError("Normalized snapshot contains duplicate partition paths") + seen_paths.add(partition.relative_path) + if partition.provider != provider or partition.venue != venue: + raise ValidationError("Normalized partition provider/venue mismatch") + expected_relative = Path( + f"provider={provider}/venue={venue}/event_type={partition.event_type}/" + f"date={partition.trading_date}/" + f"instrument={_partition_segment(partition.instrument_id, 'instrument_id')}/" + "data.parquet" + ).as_posix() + if partition.relative_path != expected_relative: + raise ValidationError("Normalized partition path metadata mismatch") + if _event_schema_id({"event_type": partition.event_type}) != partition.schema_id: + raise ValidationError("Normalized partition event/schema mismatch") + path = _safe_snapshot_partition(lake_root, snapshot_root, partition.relative_path) + expected_files.add(Path(partition.relative_path)) + if _sha256_file(path) != partition.content_sha256: + raise ValidationError(f"Normalized partition hash changed: {path}") + if _trusted_publish: + parquet = pq.ParquetFile(path) + try: + if parquet.schema_arrow != get_arrow_schema(partition.schema_id): + raise ValidationError(f"Normalized partition Arrow schema changed: {path}") + rows = parquet.metadata.num_rows + finally: + parquet.close() + logical = partition.logical_sha256 + else: + hash_version = str( + manifest.get( + "partition_logical_hash_version", + CANONICAL_JSON_PARTITION_HASH, + ) + ) + if hash_version == ARROW_IPC_PARTITION_HASH: + rows, logical = _scan_partition_arrow_ipc(path, partition.schema_id) + elif hash_version == CANONICAL_JSON_PARTITION_HASH: + rows, logical = _scan_partition(path, partition.schema_id) + else: + raise ValidationError(f"Unknown normalized partition logical hash: {hash_version}") + if rows != partition.rows: + raise ValidationError(f"Normalized partition row count changed: {path}") + if logical != partition.logical_sha256: + raise ValidationError(f"Normalized partition logical content changed: {path}") + actual_rows += rows + if actual_rows != int(manifest.get("rows", -1)): + raise ValidationError("Normalized snapshot total row count changed") + if actual_rows != claim_index.rows: + raise ValidationError("Normalized snapshot event claims changed") + actual_files = { + path.relative_to(snapshot_root) for path in snapshot_root.rglob("*") if path.is_file() + } + if actual_files != expected_files: + raise ValidationError("Normalized snapshot contains an unexpected or missing file") + if _trusted_publish: + _validate_claim_index( + lake_root, + snapshot_id, + logical_sha256, + claim_index, + ) + else: + _index_for_snapshot( + lake_root, + snapshot_root, + partitions, + snapshot_id=snapshot_id, + snapshot_logical_sha256=logical_sha256, + expected=claim_index, + ) + claims = EventClaimSequence(lake_root, snapshot_id, claim_index) + return NormalizedSnapshot( + schema_version=SCHEMA_VERSION_V2, + layer="normalized", + snapshot_id=snapshot_id, + provider=provider, + venue=venue, + created_at=created_at, + logical_sha256=logical_sha256, + rows=actual_rows, + upstream_raw_references=raw_references, + event_claims=claims, + partitions=partitions, + layout_version=LAYOUT_VERSION, + partition_logical_hash_version=str( + manifest.get( + "partition_logical_hash_version", + CANONICAL_JSON_PARTITION_HASH, + ) + ), + event_claim_index=claim_index, + l2_checkpoints=checkpoints, + ) + + +def _all_duplicate_ids_from_spool(path: Path) -> set[str]: + seen: set[str] = set() + duplicates: set[str] = set() + for record in _iter_spooled_records(path): + event_id = record.get("event_id") + if not isinstance(event_id, str): + continue + if event_id in seen: + duplicates.add(event_id) + else: + seen.add(event_id) + return duplicates + + +def _validate_stream_record( + record: dict[str, Any], + *, + provider: str, + stream_key: tuple[str, str, str], + last_sequences: dict[tuple[str, str, str, str], int], + books: dict[tuple[str, str, str], L2BookReconstructor], + expected_l2: Mapping[tuple[str, str, str], Mapping[int, str]], + reached_l2: dict[tuple[str, str, str], set[int]], +) -> None: + if str(record.get("source")) != provider: + raise ValidationError(f"stream source does not match provider {provider}") + schema_id = _event_schema_id(record) + _validate_event_record(schema_id, record) + event_type = str(record["event_type"]) + domain = "book" if event_type in {"book_snapshot", "book_delta"} else event_type + sequence_key = (*stream_key, domain) + sequence = int(record["sequence"]) + previous = last_sequences.get(sequence_key) + if previous is not None and sequence <= previous: + raise ValidationError( + f"Sequence must be strictly increasing for stream {sequence_key}: " + f"previous={previous}, current={sequence}" + ) + if ( + event_type == "book_delta" + and previous is not None + and int(record["previous_sequence"]) != previous + ): + raise ValidationError( + "book_delta previous_sequence must equal prior stream sequence: " + f"expected={previous}, actual={record['previous_sequence']}" + ) + if event_type in {"book_snapshot", "book_delta"}: + book = books.setdefault(stream_key, L2BookReconstructor()) + book._apply_validated_without_checkpoint(record) + expected = expected_l2.get(stream_key, {}) + if sequence in expected: + checkpoint = book.checkpoint() + if checkpoint.state_sha256 != expected[sequence]: + raise L2ReplayError( + f"L2 checkpoint hash mismatch at sequence {sequence}: " + f"expected={expected[sequence]}, actual={checkpoint.state_sha256}" + ) + reached_l2.setdefault(stream_key, set()).add(sequence) + last_sequences[sequence_key] = sequence + + +def _revalidate_streams_after_duplicate_exclusions( + spool_path: Path, + *, + provider: str, + invalid_streams: Mapping[tuple[str, str, str], str], + duplicate_event_ids: set[str], + expected_l2: Mapping[tuple[str, str, str], Mapping[int, str]], +) -> dict[tuple[str, str, str], str]: + """Revalidate survivors because removing duplicate IDs can create L2 gaps.""" + revised = dict(invalid_streams) + last_sequences: dict[tuple[str, str, str, str], int] = {} + books: dict[tuple[str, str, str], L2BookReconstructor] = {} + reached_l2: dict[tuple[str, str, str], set[int]] = {} + for index, record in enumerate(_iter_spooled_records(spool_path)): + stream_key = _stream_key(record, index) + if stream_key in revised or record.get("event_id") in duplicate_event_ids: + continue + try: + _validate_stream_record( + record, + provider=provider, + stream_key=stream_key, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) + except (ValidationError, ValueError, TypeError, OverflowError) as exc: + revised[stream_key] = f"stream_validation_failed: {exc}" + for stream_key, expected in expected_l2.items(): + if stream_key in revised: + continue + if stream_key not in books: + if expected: + revised[stream_key] = ( + "stream_validation_failed: Expected L2 stream was removed by " + "duplicate event_id quarantine" + ) + continue + missing = set(expected).difference(reached_l2.get(stream_key, set())) + if missing: + revised[stream_key] = ( + "stream_validation_failed: Expected L2 checkpoints were not reached: " + f"{sorted(missing)}" + ) + return revised + + +@dataclass(frozen=True) +class _ArrowBatchIdentity: + schema_id: str + event_type: str + trading_date: str + instrument_id: str + latest_available: datetime + + +def _all_true(values: pa.Array | pa.ChunkedArray) -> bool: + result = pc.all(values).as_py() + return result is True + + +def _require_all(values: pa.Array | pa.ChunkedArray, message: str) -> None: + if not _all_true(values): + raise ValidationError(message) + + +def _uniform_value(values: pa.Array, field_name: str) -> Any: + if len(values) == 0 or values.null_count: + raise ValidationError(f"Arrow {field_name} must be non-null and non-empty") + first = values[0] + if not _all_true(pc.equal(values, first)): + raise ValidationError(f"Arrow batch must contain one {field_name}") + return first.as_py() + + +def _validate_fixed_point_array(values: pa.StructArray, field_name: str) -> None: + units = values.field("units") + scale = values.field("scale") + if values.null_count or units.null_count or scale.null_count: + raise ValidationError(f"Arrow {field_name} contains null fixed-point values") + _require_all( + pc.greater_equal(scale, pa.scalar(0, pa.int16())), f"{field_name}.scale is negative" + ) + _require_all( + pc.less_equal(scale, pa.scalar(18, pa.int16())), + f"{field_name}.scale exceeds 18", + ) + + +def _validate_common_arrow_batch( + batch: pa.RecordBatch, + *, + provider: str, +) -> _ArrowBatchIdentity: + try: + batch.validate(full=True) + except pa.ArrowInvalid as exc: + raise ValidationError(f"Arrow batch is structurally invalid: {exc}") from exc + event_type_index = batch.schema.get_field_index("event_type") + if event_type_index < 0 or batch.num_rows == 0: + raise ValidationError("Arrow event batch must contain at least one event_type") + event_type = str(_uniform_value(batch.column(event_type_index), "event_type")) + schema_id = _event_schema_id({"event_type": event_type}) + expected = get_arrow_schema(schema_id) + if batch.schema != expected: + raise ValidationError( + f"Arrow schema mismatch for {schema_id}: expected={expected}, actual={batch.schema}" + ) + for schema_field, values in zip(expected, batch.columns, strict=True): + if not schema_field.nullable and values.null_count: + raise ValidationError(f"Arrow required field contains nulls: {schema_field.name}") + for name in ("event_id", "instrument_id", "source", "session_id"): + values = batch.column(expected.get_field_index(name)) + _require_all( + pc.greater(pc.utf8_length(values), pa.scalar(0, pa.int32())), + f"Arrow {name} must be non-empty", + ) + source = str(_uniform_value(batch.column(expected.get_field_index("source")), "source")) + if source != provider: + raise ValidationError(f"stream source does not match provider {provider}") + instrument_id = str( + _uniform_value(batch.column(expected.get_field_index("instrument_id")), "instrument_id") + ) + trading_day = _uniform_value( + batch.column(expected.get_field_index("trading_day")), + "trading_day", + ) + event_time = batch.column(expected.get_field_index("event_time")) + received_at = batch.column(expected.get_field_index("received_at")) + available_at = batch.column(expected.get_field_index("available_at")) + for name, values in ( + ("event_time", event_time), + ("received_at", received_at), + ("available_at", available_at), + ): + try: + pc.cast(values, pa.timestamp("us", tz="UTC"), safe=True) + except pa.ArrowInvalid as exc: + raise ValidationError( + f"Arrow {name} has nanoseconds that frozen JSON cannot preserve" + ) from exc + _require_all( + pc.less_equal(event_time, received_at), + "received_at must not be earlier than event_time", + ) + _require_all( + pc.less_equal(received_at, available_at), + "available_at must not be earlier than received_at", + ) + sequence = batch.column(expected.get_field_index("sequence")) + _require_all( + pc.greater_equal(sequence, pa.scalar(0, pa.int64())), + "Arrow sequence must be non-negative", + ) + latest_available = pc.max(available_at).as_py() + if not isinstance(latest_available, datetime): + raise ValidationError("Arrow available_at maximum is not a datetime") + return _ArrowBatchIdentity( + schema_id=schema_id, + event_type=event_type, + trading_date=_cached_date_text(trading_day), + instrument_id=instrument_id, + latest_available=latest_available, + ) + + +def _logical_batch_rows(batch: pa.RecordBatch, schema_id: str) -> list[dict[str, Any]]: + return _logical_rows(get_arrow_schema(schema_id), batch.to_pylist()) + + +def _sort_keys(rows: list[dict[str, Any]]) -> tuple[_SortKey, _SortKey]: + keys = [ + ( + _cached_timestamp(str(row["event_time"])), + int(row["sequence"]), + str(row["event_id"]), + ) + for row in rows + ] + if any(current < previous for previous, current in pairwise(keys)): + raise ValidationError("Arrow event batch sort order moved backwards") + return keys[0], keys[-1] + + +def _validate_l2_delta_columns(batch: pa.RecordBatch) -> None: + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + side = batch.column(schema.get_field_index("side")) + action = batch.column(schema.get_field_index("action")) + price = batch.column(schema.get_field_index("price")) + quantity = batch.column(schema.get_field_index("quantity")) + previous = batch.column(schema.get_field_index("previous_sequence")) + sequence = batch.column(schema.get_field_index("sequence")) + _validate_fixed_point_array(price, "price") + _validate_fixed_point_array(quantity, "quantity") + _require_all(pc.is_in(side, value_set=pa.array(["bid", "ask"])), "Arrow side is invalid") + _require_all( + pc.is_in(action, value_set=pa.array(["upsert", "delete"])), + "Arrow action is invalid", + ) + price_units = price.field("units") + quantity_units = quantity.field("units") + _require_all( + pc.greater(price_units, pa.scalar(0, pa.int64())), + "price must be positive", + ) + _require_all( + pc.greater_equal(quantity_units, pa.scalar(0, pa.int64())), + "quantity must be non-negative", + ) + _require_all( + pc.greater_equal(previous, pa.scalar(0, pa.int64())), + "previous_sequence must be non-negative", + ) + _require_all(pc.less(previous, sequence), "previous_sequence must precede sequence") + delete_ok = pc.and_( + pc.equal(action, pa.scalar("delete")), + pc.equal(quantity_units, pa.scalar(0, pa.int64())), + ) + upsert_ok = pc.and_( + pc.equal(action, pa.scalar("upsert")), + pc.greater(quantity_units, pa.scalar(0, pa.int64())), + ) + _require_all(pc.or_(delete_ok, upsert_ok), "Arrow delta action and quantity disagree") + + +def _try_apply_uniform_l2_delta_batch( + batch: pa.RecordBatch, + *, + identity: _ArrowBatchIdentity, + last_sequences: dict[tuple[str, str, str, str], int], + books: dict[tuple[str, str, str], L2BookReconstructor], + expected_l2: Mapping[tuple[str, str, str], Mapping[int, str]], + reached_l2: dict[tuple[str, str, str], set[int]], +) -> tuple[_SortKey, _SortKey] | None: + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + source = str(_uniform_value(batch.column(schema.get_field_index("source")), "source")) + instrument_id = str( + _uniform_value(batch.column(schema.get_field_index("instrument_id")), "instrument_id") + ) + session_id = str( + _uniform_value(batch.column(schema.get_field_index("session_id")), "session_id") + ) + stream_key = (source, instrument_id, session_id) + sequence = batch.column(schema.get_field_index("sequence")) + previous = batch.column(schema.get_field_index("previous_sequence")) + event_time = batch.column(schema.get_field_index("event_time")) + if batch.num_rows > 1: + _require_all( + pc.equal(previous.slice(1), sequence.slice(0, batch.num_rows - 1)), + "book_delta previous_sequence must equal prior stream sequence", + ) + _require_all( + pc.greater_equal(event_time.slice(1), event_time.slice(0, batch.num_rows - 1)), + "L2 event_time moved backwards", + ) + action = batch.column(schema.get_field_index("action")) + side = batch.column(schema.get_field_index("side")) + price = batch.column(schema.get_field_index("price")) + price_units = price.field("units") + price_scale = price.field("scale") + if not ( + _all_true(pc.equal(action, pa.scalar("upsert"))) + and _all_true(pc.equal(side, side[0])) + and _all_true(pc.equal(price_units, price_units[0])) + and _all_true(pc.equal(price_scale, price_scale[0])) + ): + return None + first_sequence = int(sequence[0].as_py()) + final_sequence = int(sequence[-1].as_py()) + expected = expected_l2.get(stream_key, {}) + if any(first_sequence <= checkpoint < final_sequence for checkpoint in expected): + return None + book = books.setdefault(stream_key, L2BookReconstructor()) + final_event_time = _cached_utc_text(event_time[-1].as_py(), "event_time") + quantity = batch.column(schema.get_field_index("quantity")) + book._apply_validated_uniform_upsert_batch( + source=source, + instrument_id=instrument_id, + session_id=session_id, + first_previous_sequence=int(previous[0].as_py()), + final_sequence=final_sequence, + first_event_time=_cached_utc_text(event_time[0].as_py(), "event_time"), + final_event_time=final_event_time, + side=str(side[0].as_py()), + price_units=int(price_units[0].as_py()), + price_scale=int(price_scale[0].as_py()), + quantity_units=int(quantity.field("units")[-1].as_py()), + quantity_scale=int(quantity.field("scale")[-1].as_py()), + ) + sequence_key = (*stream_key, "book") + last_sequences[sequence_key] = final_sequence + if final_sequence in expected: + checkpoint = book.checkpoint() + if checkpoint.state_sha256 != expected[final_sequence]: + raise L2ReplayError( + f"L2 checkpoint hash mismatch at sequence {final_sequence}: " + f"expected={expected[final_sequence]}, actual={checkpoint.state_sha256}" + ) + reached_l2.setdefault(stream_key, set()).add(final_sequence) + first_key = ( + _utc_datetime(event_time[0].as_py(), "event_time"), + first_sequence, + str(batch.column(schema.get_field_index("event_id"))[0].as_py()), + ) + last_key = ( + _utc_datetime(event_time[-1].as_py(), "event_time"), + final_sequence, + str(batch.column(schema.get_field_index("event_id"))[-1].as_py()), + ) + return first_key, last_key + + +def _validate_record_batch( + batch: pa.RecordBatch, + *, + provider: str, + input_offset: int, + last_sequences: dict[tuple[str, str, str, str], int], + books: dict[tuple[str, str, str], L2BookReconstructor], + expected_l2: Mapping[tuple[str, str, str], Mapping[int, str]], + reached_l2: dict[tuple[str, str, str], set[int]], +) -> tuple[_ArrowBatchIdentity, _SortKey, _SortKey]: + identity = _validate_common_arrow_batch(batch, provider=provider) + if identity.schema_id == BOOK_DELTA_EVENT_SCHEMA_ID: + _validate_l2_delta_columns(batch) + sort_keys = _try_apply_uniform_l2_delta_batch( + batch, + identity=identity, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) + if sort_keys is not None: + return identity, *sort_keys + rows = _logical_batch_rows(batch, identity.schema_id) + first_key, last_key = _sort_keys(rows) + for index, record in enumerate(rows, start=input_offset): + stream_key = _stream_key(record, index) + _validate_stream_record( + record, + provider=provider, + stream_key=stream_key, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) + return identity, first_key, last_key + + +def _iter_record_batches( + batches: Iterable[pa.RecordBatch] | pa.RecordBatchReader, +) -> Iterator[pa.RecordBatch]: + source = batches if isinstance(batches, pa.RecordBatchReader) else iter(batches) + for batch in source: + if not isinstance(batch, pa.RecordBatch): + raise ValidationError("Normalized Arrow input must yield RecordBatch objects") + if batch.num_rows: + yield batch + + +def _finalize_strict_batch_snapshot( + lake_root: Path, + stage: Path, + snapshot_stage: Path, + partitions: _PartitionSet, + *, + provider: str, + venue: str, + raw_references: tuple[RawObjectReference, ...], + accepted_rows: int, + created_at: str, + books: Mapping[tuple[str, str, str], L2BookReconstructor], + policy: StoragePolicy, +) -> NormalizationResult: + partition_manifests = _partition_manifests( + partitions, + provider=provider, + venue=venue, + logical_hash_version=ARROW_IPC_PARTITION_HASH, + ) + staged_index = stage / "claim-index" + claim_shards = _build_claim_index_files( + snapshot_stage, + partition_manifests, + staged_index, + stage / "duckdb-temporary", + ) + claim_index = EventClaimIndexManifest( + format=CLAIM_FORMAT, + claim_version=CLAIM_VERSION, + rows=sum(item.rows for item in claim_shards), + shards=claim_shards, + ) + if claim_index.rows != accepted_rows: + raise ValidationError("Normalized event-claim row count changed") + checkpoints = tuple( + L2CheckpointManifest( + source=stream_key[0], + instrument_id=stream_key[1], + session_id=stream_key[2], + sequence=int(book.sequence), + state_sha256=book.checkpoint().state_sha256, + ) + for stream_key, book in sorted(books.items()) + if book.sequence is not None + ) + identity = _snapshot_payload_v3( + provider=provider, + venue=venue, + created_at=created_at, + upstream_raw_references=raw_references, + partitions=partition_manifests, + event_claim_index=claim_index, + l2_checkpoints=checkpoints, + partition_logical_hash_version=ARROW_IPC_PARTITION_HASH, + ) + logical_sha256 = _sha256_bytes(_canonical_json_bytes(identity)) + snapshot_id = f"sha256-{logical_sha256}" + snapshot_manifest = { + **identity, + "snapshot_id": snapshot_id, + "logical_sha256": logical_sha256, + "rows": accepted_rows, + } + (snapshot_stage / "manifest.json").write_text( + json.dumps(snapshot_manifest, indent=2, ensure_ascii=False), + encoding="utf-8", + ) + _write_claim_index_manifest( + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=logical_sha256, + shards=claim_shards, + ) + candidate_paths = _claim_index_files(staged_index) + snapshot_dir = lake_root / "normalized" / "snapshots" / snapshot_id + with _lake_lock(lake_root, "normalized-commit", {"scope": "lake-wide"}): + if snapshot_dir.exists(): + from quant_data_kit.data_lake import load_normalized_snapshot + + existing = load_normalized_snapshot(lake_root, snapshot_id) + if existing.logical_sha256 != logical_sha256: + raise ValidationError(f"Normalized snapshot collision: {snapshot_dir}") + return NormalizationResult( + snapshot=existing, + accepted_rows=existing.rows, + quarantined_rows=0, + quarantine_manifest=None, + ) + _assert_lake_wide_claims( + lake_root, + candidate_paths, + candidate_snapshot_id=snapshot_id, + ) + require_collection_capacity(lake_root, projected_write_bytes=0, policy=policy) + _mkdir_in_lake(lake_root, snapshot_dir.parent) + _validate_lake_path(lake_root, snapshot_dir, allow_missing=True) + index_root = _claim_index_root(lake_root, snapshot_id) + index_preexisted = index_root.exists() + _publish_or_validate_claim_index( + lake_root, + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=logical_sha256, + expected=claim_index, + ) + try: + os.replace(snapshot_stage, snapshot_dir) + except OSError: + if not index_preexisted and index_root.exists(): + os.replace(index_root, staged_index) + raise + verified = load_normalized_snapshot_v3( + lake_root, + snapshot_id, + _trusted_publish=True, + ) + return NormalizationResult( + snapshot=verified, + accepted_rows=verified.rows, + quarantined_rows=0, + quarantine_manifest=None, + ) + + +def write_normalized_batches_v3( + root: Path, + batches: Iterable[pa.RecordBatch] | pa.RecordBatchReader, + *, + provider: str, + venue: str, + upstream_raw_references: Iterable[RawObjectReference], + expected_l2_checkpoint_hashes: Mapping[tuple[str, str, str], Mapping[int, str]] | None, + policy: StoragePolicy, +) -> NormalizationResult: + """Write already-standardized Arrow batches with strict, bounded-memory gates. + + Unlike the Mapping compatibility entrypoint, a malformed Arrow batch fails the + entire operation closed. No partial snapshot or quarantine object is published. + Batches must be homogeneous by event type, instrument, and trading day and must + arrive in normalized partition order. + """ + lake_root = _resolved_lake_root(root, create=True) + provider = _segment(provider, "provider") + venue = _segment(venue, "venue") + raw_references = tuple( + sorted( + upstream_raw_references, + key=lambda item: ( + item.source, + item.collection_date, + item.idempotency_key, + item.object_id, + ), + ) + ) + if not raw_references: + raise ValidationError("Normalized data requires at least one trusted Raw reference") + if len(set(raw_references)) != len(raw_references): + raise ValidationError("Normalized data contains duplicate Raw references") + for reference in raw_references: + if reference.source != provider: + raise ValidationError("Normalized provider does not match its Raw source") + validate_raw_reference(lake_root, reference, allow_archived=False) + require_collection_capacity(lake_root, projected_write_bytes=1, policy=policy) + + expected_l2 = dict(expected_l2_checkpoint_hashes or {}) + with _streaming_stage(lake_root) as stage: + snapshot_stage = stage / "snapshot" + snapshot_stage.mkdir() + partitions = _PartitionSet(snapshot_stage, provider, venue) + last_sequences: dict[tuple[str, str, str, str], int] = {} + books: dict[tuple[str, str, str], L2BookReconstructor] = {} + reached_l2: dict[tuple[str, str, str], set[int]] = {} + latest_available: datetime | None = None + input_rows = 0 + next_capacity_check = _CAPACITY_CHECK_ROWS + try: + for batch in _iter_record_batches(batches): + projected_rows = input_rows + batch.num_rows + if projected_rows >= next_capacity_check: + require_collection_capacity( + lake_root, + projected_write_bytes=max(batch.nbytes, 1), + policy=policy, + ) + next_capacity_check = ( + projected_rows // _CAPACITY_CHECK_ROWS + 1 + ) * _CAPACITY_CHECK_ROWS + identity, first_sort_key, last_sort_key = _validate_record_batch( + batch, + provider=provider, + input_offset=input_rows, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) + partitions.append_record_batch( + batch, + schema_id=identity.schema_id, + event_type=identity.event_type, + trading_date=identity.trading_date, + instrument_id=identity.instrument_id, + first_sort_key=first_sort_key, + last_sort_key=last_sort_key, + ) + input_rows = projected_rows + if latest_available is None or identity.latest_available > latest_available: + latest_available = identity.latest_available + finally: + partitions.close() + for stream_key, expected in expected_l2.items(): + if stream_key not in books: + if expected: + raise L2ReplayError(f"Expected L2 stream was not observed: {stream_key}") + continue + missing = set(expected).difference(reached_l2.get(stream_key, set())) + if missing: + raise L2ReplayError(f"Expected L2 checkpoints were not reached: {sorted(missing)}") + if input_rows == 0: + return NormalizationResult( + snapshot=None, + accepted_rows=0, + quarantined_rows=0, + quarantine_manifest=None, + ) + if latest_available is None: + raise ValidationError("Normalized accepted rows have no available_at maximum") + return _finalize_strict_batch_snapshot( + lake_root, + stage, + snapshot_stage, + partitions, + provider=provider, + venue=venue, + raw_references=raw_references, + accepted_rows=input_rows, + created_at=_cached_utc_text(latest_available, "available_at"), + books=books, + policy=policy, + ) + + +def write_normalized_events_v3( + root: Path, + records: Iterable[Mapping[str, Any]], + *, + provider: str, + venue: str, + upstream_raw_references: Iterable[RawObjectReference], + expected_l2_checkpoint_hashes: Mapping[tuple[str, str, str], Mapping[int, str]] | None, + policy: StoragePolicy, +) -> NormalizationResult: + lake_root = _resolved_lake_root(root, create=True) + provider = _segment(provider, "provider") + venue = _segment(venue, "venue") + raw_references = tuple( + sorted( + upstream_raw_references, + key=lambda item: ( + item.source, + item.collection_date, + item.idempotency_key, + item.object_id, + ), + ) + ) + if not raw_references: + raise ValidationError("Normalized data requires at least one trusted Raw reference") + if len(set(raw_references)) != len(raw_references): + raise ValidationError("Normalized data contains duplicate Raw references") + for reference in raw_references: + if reference.source != provider: + raise ValidationError("Normalized provider does not match its Raw source") + validate_raw_reference(lake_root, reference, allow_archived=False) + require_collection_capacity(lake_root, projected_write_bytes=1, policy=policy) + + expected_l2 = dict(expected_l2_checkpoint_hashes or {}) + with _streaming_stage(lake_root) as stage: + snapshot_stage = stage / "snapshot" + snapshot_stage.mkdir() + spool_path = stage / "input.json-seq" + partitions = _PartitionSet(snapshot_stage, provider, venue) + invalid_streams: dict[tuple[str, str, str], str] = {} + last_sequences: dict[tuple[str, str, str, str], int] = {} + books: dict[tuple[str, str, str], L2BookReconstructor] = {} + reached_l2: dict[tuple[str, str, str], set[int]] = {} + latest_available: datetime | None = None + input_rows = 0 + with _InputSpool(spool_path) as spool: + for index, source_record in enumerate(records): + record = dict(source_record) + input_rows += 1 + stream_key = _stream_key(record, index) + if stream_key in invalid_streams: + spool.append(record, requires_evidence_encoding=_has_non_finite(record)) + continue + try: + _validate_stream_record( + record, + provider=provider, + stream_key=stream_key, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) + partitions.append(record) + available = _utc_datetime(record["available_at"], "available_at") + if latest_available is None or available > latest_available: + latest_available = available + except (ValidationError, ValueError, TypeError, OverflowError) as exc: + invalid_streams[stream_key] = f"stream_validation_failed: {exc}" + spool.append(record, requires_evidence_encoding=True) + else: + spool.append(record) + if input_rows % _CAPACITY_CHECK_ROWS == 0: + partitions.flush_all() + require_collection_capacity( + lake_root, + projected_write_bytes=1, + policy=policy, + ) + partitions.close() + + for stream_key, expected in expected_l2.items(): + if stream_key not in books: + if expected: + raise L2ReplayError(f"Expected L2 stream was not observed: {stream_key}") + continue + if stream_key in invalid_streams: + continue + missing = set(expected).difference(reached_l2.get(stream_key, set())) + if missing: + invalid_streams[stream_key] = ( + "stream_validation_failed: Expected L2 checkpoints were not reached: " + f"{sorted(missing)}" + ) + + duplicate_ids = _duplicate_event_ids(partitions.paths()) + if invalid_streams: + duplicate_ids.update(_all_duplicate_ids_from_spool(spool_path)) + if duplicate_ids: + invalid_streams = _revalidate_streams_after_duplicate_exclusions( + spool_path, + provider=provider, + invalid_streams=invalid_streams, + duplicate_event_ids=duplicate_ids, + expected_l2=expected_l2, + ) + quarantine_temp = stage / "quarantine.records.jsonl" + quarantine_rows = 0 + accepted_rows = sum(item.rows for item in partitions.partitions.values()) + created_at = ( + _utc_text(latest_available, "available_at") if latest_available is not None else None + ) + if invalid_streams or duplicate_ids: + partitions, accepted_rows, quarantine_rows, created_at = _rebuild_after_exclusions( + snapshot_stage, + spool_path, + provider=provider, + venue=venue, + invalid_streams=invalid_streams, + duplicate_event_ids=duplicate_ids, + quarantine_path=quarantine_temp, + ) + quarantine_manifest = ( + _publish_quarantine_file( + lake_root, + quarantine_temp, + provider=provider, + venue=venue, + rows=quarantine_rows, + policy=policy, + ) + if quarantine_rows + else None + ) + if accepted_rows == 0: + return NormalizationResult( + snapshot=None, + accepted_rows=0, + quarantined_rows=quarantine_rows or input_rows, + quarantine_manifest=quarantine_manifest, + ) + if created_at is None: + raise ValidationError("Normalized accepted rows have no available_at maximum") + + partition_manifests = _partition_manifests( + partitions, + provider=provider, + venue=venue, + ) + claims_db = stage / "claims.duckdb" + connection = _claim_database(claims_db, snapshot_stage, partition_manifests) + try: + claim_shards = _claim_shard_manifests(connection) + claim_index = EventClaimIndexManifest( + format=CLAIM_FORMAT, + claim_version=CLAIM_VERSION, + rows=sum(item.rows for item in claim_shards), + shards=claim_shards, + ) + if claim_index.rows != accepted_rows: + raise ValidationError("Normalized event-claim row count changed") + checkpoints = tuple( + L2CheckpointManifest( + source=stream_key[0], + instrument_id=stream_key[1], + session_id=stream_key[2], + sequence=int(book.sequence), + state_sha256=book.checkpoint().state_sha256, + ) + for stream_key, book in sorted(books.items()) + if stream_key not in invalid_streams and book.sequence is not None + ) + identity = _snapshot_payload_v3( + provider=provider, + venue=venue, + created_at=created_at, + upstream_raw_references=raw_references, + partitions=partition_manifests, + event_claim_index=claim_index, + l2_checkpoints=checkpoints, + ) + logical_sha256 = _sha256_bytes(_canonical_json_bytes(identity)) + snapshot_id = f"sha256-{logical_sha256}" + snapshot_manifest = { + **identity, + "snapshot_id": snapshot_id, + "logical_sha256": logical_sha256, + "rows": accepted_rows, + } + (snapshot_stage / "manifest.json").write_text( + json.dumps(snapshot_manifest, indent=2, ensure_ascii=False), + encoding="utf-8", + ) + staged_index = stage / "claim-index" + _export_claim_index( + connection, + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=logical_sha256, + shards=claim_shards, + ) + finally: + connection.close() + claims_db.unlink(missing_ok=True) + candidate_paths = _claim_index_files(staged_index) + snapshot_dir = lake_root / "normalized" / "snapshots" / snapshot_id + with _lake_lock(lake_root, "normalized-commit", {"scope": "lake-wide"}): + if snapshot_dir.exists(): + from quant_data_kit.data_lake import load_normalized_snapshot + + existing = load_normalized_snapshot(lake_root, snapshot_id) + if existing.logical_sha256 != logical_sha256: + raise ValidationError(f"Normalized snapshot collision: {snapshot_dir}") + return NormalizationResult( + snapshot=existing, + accepted_rows=existing.rows, + quarantined_rows=quarantine_rows, + quarantine_manifest=quarantine_manifest, + ) + _assert_lake_wide_claims( + lake_root, + candidate_paths, + candidate_snapshot_id=snapshot_id, + ) + require_collection_capacity(lake_root, projected_write_bytes=0, policy=policy) + _mkdir_in_lake(lake_root, snapshot_dir.parent) + _validate_lake_path(lake_root, snapshot_dir, allow_missing=True) + index_root = _claim_index_root(lake_root, snapshot_id) + index_preexisted = index_root.exists() + _publish_or_validate_claim_index( + lake_root, + staged_index, + snapshot_id=snapshot_id, + snapshot_logical_sha256=logical_sha256, + expected=claim_index, + ) + try: + os.replace(snapshot_stage, snapshot_dir) + except OSError: + if not index_preexisted and index_root.exists(): + os.replace(index_root, staged_index) + raise + verified = load_normalized_snapshot_v3( + lake_root, + snapshot_id, + _trusted_publish=True, + ) + return NormalizationResult( + snapshot=verified, + accepted_rows=verified.rows, + quarantined_rows=quarantine_rows, + quarantine_manifest=quarantine_manifest, + ) diff --git a/tests/fixtures/providers/index.json b/tests/fixtures/providers/index.json index 61f7eca..94498f9 100644 --- a/tests/fixtures/providers/index.json +++ b/tests/fixtures/providers/index.json @@ -4,7 +4,7 @@ "market_data_certified": false, "provider_integrity": { "binance": "U/u/pu continuity plus immutable Raw SHA-256; provider has no books checksum field", - "okx": "signed CRC32 books checksum plus immutable Raw SHA-256", + "okx": "current live prerequisite is TLS plus strict seqId/prevSeqId continuity; checksum=0 is not an integrity signal; bundled nonzero signed CRC32 books values are historical golden-fixture checks only; immutable Raw SHA-256 remains mandatory; not market-data-certified", "cn_neutral": "desensitized replay fixture only; not market-data-certified" }, "l2_checkpoint_sha256": { diff --git a/tests/test_adapters_v2.py b/tests/test_adapters_v2.py index 6fcc5d8..5c48ce5 100644 --- a/tests/test_adapters_v2.py +++ b/tests/test_adapters_v2.py @@ -238,7 +238,7 @@ def test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_fail assert len(binance.adapt(update)) == 2 -def test_okx_books_checksum_fails_closed_and_corrected_messages_are_retryable() -> None: +def test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable() -> None: adapter = okx_adapter() snapshot = deepcopy(load_messages("okx")[3]) bad_snapshot = deepcopy(snapshot) @@ -255,14 +255,77 @@ def test_okx_books_checksum_fails_closed_and_corrected_messages_are_retryable() assert len(adapter.adapt(update)) == 2 assert "no books checksum" in BinanceFixtureAdapter.integrity_gate - assert "CRC32" in OKXFixtureAdapter.integrity_gate + assert adapter.certification_status == "legacy-fixture-certified-not-market-data-certified" + assert "checksum=0 is not an integrity signal" in OKXFixtureAdapter.integrity_gate + assert "historical fixtures only" in OKXFixtureAdapter.integrity_gate + + +def test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract() -> None: + adapter = okx_adapter() + snapshot = deepcopy(load_messages("okx")[3]) + snapshot["checksum"] = 0 + assert adapter.adapt(snapshot)[0]["event_type"] == "book_snapshot" + + heartbeat = deepcopy(load_messages("okx")[4]) + heartbeat.update( + { + "prevSeqId": "200", + "seqId": "200", + "checksum": 0, + "bids": [], + "asks": [], + } + ) + assert adapter.adapt(heartbeat) == [] + + invalid_heartbeat = deepcopy(heartbeat) + invalid_heartbeat["bids"] = [["1001.00", "0.750", "0", "1"]] + with pytest.raises(ValidationError, match="heartbeat must not contain"): + adapter.adapt(invalid_heartbeat) + + update = deepcopy(load_messages("okx")[4]) + update["checksum"] = 0 + assert len(adapter.adapt(update)) == 2 + + +def test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot() -> None: + adapter = okx_adapter() + snapshot = deepcopy(load_messages("okx")[3]) + snapshot["checksum"] = 0 + reset = deepcopy(load_messages("okx")[4]) + reset.update( + { + "prevSeqId": "200", + "seqId": "199", + "checksum": 0, + "bids": [], + "asks": [], + } + ) + with pytest.raises(ValidationError, match="maintenance sequence reset.*fresh BookSnapshot"): + adapt_fixture_messages(adapter, [snapshot, reset]) + + update = deepcopy(load_messages("okx")[4]) + update["checksum"] = 0 + with pytest.raises(ValidationError, match="before BookSnapshot"): + adapter.adapt(update) + + fresh_snapshot = deepcopy(snapshot) + fresh_snapshot["seqId"] = "50" + assert adapter.adapt(fresh_snapshot)[0]["event_type"] == "book_snapshot" + fresh_update = deepcopy(update) + fresh_update["prevSeqId"] = "50" + fresh_update["seqId"] = "51" + assert len(adapter.adapt(fresh_update)) == 2 def test_fixture_index_hashes_are_exact() -> None: index = json.loads((FIXTURES / "index.json").read_text(encoding="utf-8")) assert index["certification_scope"] == "desensitized-fixture-only" assert "no books checksum" in index["provider_integrity"]["binance"] - assert "CRC32" in index["provider_integrity"]["okx"] + assert "checksum=0 is not an integrity signal" in index["provider_integrity"]["okx"] + assert "historical golden-fixture" in index["provider_integrity"]["okx"] + assert "not market-data-certified" in index["provider_integrity"]["okx"] assert "not market-data-certified" in index["provider_integrity"]["cn_neutral"] assert set(index["l2_checkpoint_sha256"]) == {"binance", "okx", "cn_neutral"} for relative_path, expected_hash in index["sha256"].items(): @@ -303,6 +366,8 @@ def test_adapter_context_time_and_sequence_primitives_fail_closed() -> None: ) sequences = BookSequenceNormalizer() + with pytest.raises(ValidationError, match="heartbeat arrived before"): + sequences.heartbeat("BTCUSDT", 10) with pytest.raises(ValidationError, match="before BookSnapshot"): sequences.delta( "BTCUSDT", @@ -311,6 +376,9 @@ def test_adapter_context_time_and_sequence_primitives_fail_closed() -> None: level_count=1, ) sequences.snapshot("BTCUSDT", 10) + sequences.heartbeat("BTCUSDT", 10) + with pytest.raises(ValidationError, match="heartbeat gap"): + sequences.heartbeat("BTCUSDT", 9) with pytest.raises(ValidationError, match="did not advance"): sequences.snapshot("BTCUSDT", 10) with pytest.raises(ValidationError, match="did not advance"): @@ -327,6 +395,9 @@ def test_adapter_context_time_and_sequence_primitives_fail_closed() -> None: provider_sequence=11, level_count=0, ) + sequences.reset("BTCUSDT") + with pytest.raises(ValidationError, match="heartbeat arrived before"): + sequences.heartbeat("BTCUSDT", 10) def test_adapter_constructors_and_unknown_message_kinds_are_strict() -> None: diff --git a/tests/test_benchmark_normalized_l2.py b/tests/test_benchmark_normalized_l2.py new file mode 100644 index 0000000..d884365 --- /dev/null +++ b/tests/test_benchmark_normalized_l2.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +from pathlib import Path + +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.schemas_v2 import validate_json_record +from tools.benchmark_normalized_l2 import run_benchmark, synthetic_l2_events + + +def test_synthetic_l2_fixture_is_sequential_and_schema_valid() -> None: + events = list(synthetic_l2_events(4)) + assert [item["sequence"] for item in events] == [1, 2, 3, 4] + assert [item.get("previous_sequence") for item in events] == [None, 1, 2, 3] + for event in events: + schema_id = ( + "puresaber.book-snapshot-event" + if event["event_type"] == "book_snapshot" + else "puresaber.book-delta-event" + ) + validate_json_record(schema_id, event) + + +def test_small_benchmark_proves_end_to_end_determinism(tmp_path: Path) -> None: + report = run_benchmark( + tmp_path / "benchmark", + rows=32, + runs=2, + minimum_events_per_second=0, + maximum_peak_rss_gib=16, + batch_rows=8, + repository=Path(__file__).resolve().parents[1], + policy=StoragePolicy( + hot_quota_bytes=1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, + ), + ) + assert report["passed"] is True + assert all(report["gates"].values()) + assert report["run_results"][0]["snapshot_id"] == report["run_results"][1]["snapshot_id"] diff --git a/tests/test_integrity_branch_gates.py b/tests/test_integrity_branch_gates.py index c1c933a..76703b8 100644 --- a/tests/test_integrity_branch_gates.py +++ b/tests/test_integrity_branch_gates.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +import shutil from collections.abc import Callable from copy import deepcopy from dataclasses import replace @@ -12,6 +13,7 @@ import quant_data_kit.curated as curated_module import quant_data_kit.data_lake as lake_module +from quant_data_kit import normalized_v3 as normalized_v3_module from quant_data_kit.curated import CuratedPartition, curate_trade_bars_from_snapshot from quant_data_kit.data_lake import ( DuckDBSnapshot, @@ -58,6 +60,71 @@ def normalized(root: Path) -> NormalizedSnapshot: return result.snapshot +def legacy_normalized(root: Path, *, key: str = "legacy-branch-gates") -> NormalizedSnapshot: + raw = write_raw_bytes( + root, + source="binance", + request={"fixture": key}, + collected_at="2026-01-02T00:00:00Z", + payload=key.encode(), + idempotency_key=key, + policy=TEST_POLICY, + ) + result = lake_module._write_normalized_events_legacy( + root, + [trade("legacy-branch-gates")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[raw.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + return result.snapshot + + +def test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw( + tmp_path: Path, +) -> None: + with pytest.raises(ValidationError, match="at least one trusted Raw reference"): + lake_module._write_normalized_events_legacy( + tmp_path, + [trade("no-raw")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[], + policy=TEST_POLICY, + ) + + raw = write_raw_bytes( + tmp_path, + source="binance", + request={"fixture": "legacy-reference-guards"}, + collected_at="2026-01-02T00:00:00Z", + payload=b"legacy-reference-guards", + idempotency_key="legacy-reference-guards", + policy=TEST_POLICY, + ) + reference = raw.reference() + with pytest.raises(ValidationError, match="duplicate Raw references"): + lake_module._write_normalized_events_legacy( + tmp_path, + [trade("duplicate-raw")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[reference, reference], + policy=TEST_POLICY, + ) + with pytest.raises(ValidationError, match="does not match its Raw source"): + lake_module._write_normalized_events_legacy( + tmp_path, + [trade("cross-provider-raw")], + provider="okx", + venue="OKX", + upstream_raw_references=[reference], + policy=TEST_POLICY, + ) + + def readdress_normalized( root: Path, snapshot: NormalizedSnapshot, @@ -70,16 +137,36 @@ def readdress_normalized( payload = json.loads(manifest_path.read_text(encoding="utf-8")) mutate(payload) if readdress: - identity = lake_module._normalized_snapshot_payload( - provider=payload["provider"], - venue=payload["venue"], - created_at=payload["created_at"], - upstream_raw_references=tuple( - RawObjectReference(**item) for item in payload["upstream_raw_references"] - ), - event_claims=tuple(EventClaimReference(**item) for item in payload["event_claims"]), - partitions=tuple(PartitionManifest(**item) for item in payload["partitions"]), + raw_references = tuple( + RawObjectReference(**item) for item in payload["upstream_raw_references"] ) + partitions = tuple(PartitionManifest(**item) for item in payload["partitions"]) + if payload.get("layout_version") == normalized_v3_module.LAYOUT_VERSION: + index_payload = dict(payload["event_claim_index"]) + index_payload["shards"] = tuple( + lake_module.EventClaimShardManifest(**item) for item in index_payload["shards"] + ) + identity = normalized_v3_module._snapshot_payload_v3( + provider=payload["provider"], + venue=payload["venue"], + created_at=payload["created_at"], + upstream_raw_references=raw_references, + partitions=partitions, + event_claim_index=lake_module.EventClaimIndexManifest(**index_payload), + l2_checkpoints=tuple( + lake_module.L2CheckpointManifest(**item) + for item in payload.get("l2_checkpoints", []) + ), + ) + else: + identity = lake_module._normalized_snapshot_payload( + provider=payload["provider"], + venue=payload["venue"], + created_at=payload["created_at"], + upstream_raw_references=raw_references, + event_claims=tuple(EventClaimReference(**item) for item in payload["event_claims"]), + partitions=partitions, + ) logical_sha256 = lake_module._sha256_bytes(lake_module._canonical_json_bytes(identity)) payload["logical_sha256"] = logical_sha256 payload["snapshot_id"] = f"sha256-{logical_sha256}" @@ -132,7 +219,13 @@ def readdress_normalized( "logical content", ), (lambda payload: payload.__setitem__("rows", payload["rows"] + 1), False, "total row"), - (lambda payload: payload.__setitem__("event_claims", []), True, "event claims"), + ( + lambda payload: payload["event_claim_index"].__setitem__( + "rows", payload["event_claim_index"]["rows"] + 1 + ), + True, + "event claims", + ), ], ) def test_normalized_manifest_defense_branches( @@ -245,13 +338,10 @@ def wrong_staging_hash(path: Path) -> str: def test_normalized_claim_schema_and_manifest_file_shape(tmp_path: Path) -> None: snapshot = normalized(tmp_path) - claim_path = next((tmp_path / "normalized" / "event-claims").rglob("*.json")) - claim = snapshot.event_claims[0] - payload = json.loads(claim_path.read_text(encoding="utf-8")) - payload["layer"] = "wrong" - claim_path.write_text(json.dumps(payload), encoding="utf-8") - with pytest.raises(ValidationError, match="claim schema"): - lake_module._validate_event_claim(tmp_path, claim) + claim_path = next((tmp_path / "normalized" / "event-claim-index-v3").rglob("*.parquet")) + claim_path.write_bytes(claim_path.read_bytes() + b"tampered") + with pytest.raises(ValidationError, match="physical content changed"): + load_normalized_snapshot(tmp_path, snapshot.snapshot_id) other_root = tmp_path / "manifest-directory" other_snapshot = normalized(other_root) @@ -264,6 +354,223 @@ def test_normalized_claim_schema_and_manifest_file_shape(tmp_path: Path) -> None load_normalized_snapshot(other_root, other_snapshot.snapshot_id) +@pytest.mark.parametrize( + ("mutate", "readdress", "message"), + [ + (lambda payload: payload.__setitem__("layer", "raw"), False, "identity mismatch"), + (lambda payload: payload.__setitem__("provider", "okx"), True, "Raw source"), + ( + lambda payload: payload["partitions"].append(deepcopy(payload["partitions"][0])), + True, + "duplicate partition", + ), + ( + lambda payload: payload["partitions"][0].__setitem__("provider", "okx"), + True, + "provider/venue", + ), + ( + lambda payload: payload["partitions"][0].__setitem__( + "schema_id", "puresaber.quote-event" + ), + True, + "event/schema", + ), + ( + lambda payload: payload["partitions"][0].__setitem__( + "relative_path", "provider=binance/wrong/data.parquet" + ), + True, + "path metadata", + ), + ( + lambda payload: payload["partitions"][0].__setitem__( + "rows", payload["partitions"][0]["rows"] + 1 + ), + True, + "row count", + ), + ( + lambda payload: payload["partitions"][0].__setitem__("logical_sha256", "0" * 64), + True, + "logical content", + ), + (lambda payload: payload.__setitem__("rows", payload["rows"] + 1), False, "total row"), + (lambda payload: payload.__setitem__("event_claims", []), True, "event claims"), + ], +) +def test_legacy_normalized_manifest_remains_strictly_verifiable( + tmp_path: Path, + mutate: Callable[[dict[str, Any]], None], + readdress: bool, + message: str, +) -> None: + snapshot = legacy_normalized(tmp_path) + snapshot_id = readdress_normalized(tmp_path, snapshot, mutate, readdress=readdress) + with pytest.raises(ValidationError, match=message): + load_normalized_snapshot(tmp_path, snapshot_id) + + +def test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed(tmp_path: Path) -> None: + snapshot = legacy_normalized(tmp_path) + claim = snapshot.event_claims[0] + claim_path = lake_module._event_claim_path(tmp_path, claim) + claim_path.unlink() + + second_raw = write_raw_bytes( + tmp_path, + source="binance", + request={"fixture": "legacy-second"}, + collected_at="2026-01-02T00:00:00Z", + payload=b"legacy-second", + idempotency_key="legacy-second", + policy=TEST_POLICY, + ) + recovered = lake_module._write_normalized_events_legacy( + tmp_path, + [trade("legacy-branch-gates")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[second_raw.reference()], + policy=TEST_POLICY, + ) + assert recovered.snapshot is not None + assert claim_path.is_file() + + changed = trade("legacy-branch-gates") + changed["price"]["units"] += 1 + third_raw = write_raw_bytes( + tmp_path, + source="binance", + request={"fixture": "legacy-third"}, + collected_at="2026-01-02T00:00:00Z", + payload=b"legacy-third", + idempotency_key="legacy-third", + policy=TEST_POLICY, + ) + with pytest.raises(ValidationError, match="Conflicting lake event_id claim"): + lake_module._write_normalized_events_legacy( + tmp_path, + [changed], + provider="binance", + venue="BINANCE", + upstream_raw_references=[third_raw.reference()], + policy=TEST_POLICY, + ) + + payload = json.loads(claim_path.read_text(encoding="utf-8")) + payload["layer"] = "wrong" + claim_path.write_text(json.dumps(payload), encoding="utf-8") + with pytest.raises(ValidationError, match="claim schema changed"): + load_normalized_snapshot(tmp_path, snapshot.snapshot_id) + + +def test_legacy_snapshot_rejects_unexpected_file(tmp_path: Path) -> None: + snapshot = legacy_normalized(tmp_path) + snapshot_dir = tmp_path / "normalized" / "snapshots" / snapshot.snapshot_id + (snapshot_dir / "unexpected.bin").write_bytes(b"unexpected") + with pytest.raises(ValidationError, match="unexpected or missing"): + lake_module._load_normalized_snapshot( + tmp_path, + snapshot.snapshot_id, + verify_event_claim_files=False, + ) + + +def test_raw_path_staging_and_archive_negative_guards( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + manifest = write_raw_bytes( + tmp_path, + source="binance", + request={"fixture": "raw-guards"}, + collected_at="2026-01-02T00:00:00Z", + payload=b"raw-guards", + idempotency_key="raw-guards", + policy=TEST_POLICY, + ) + reference = manifest.reference() + object_dir = lake_module._raw_object_dir(tmp_path, reference) + copied = tmp_path / "raw" / "copied-object" + shutil.copytree(object_dir, copied) + with pytest.raises(ValidationError, match="directory identity"): + lake_module._load_raw_from_dir(tmp_path, copied) + with pytest.raises(ValidationError, match="trusted reference"): + lake_module._load_raw_from_dir( + tmp_path, + object_dir, + expected=replace(reference, idempotency_key="other-key"), + ) + + staging_root = lake_module._mkdir_in_lake(tmp_path, tmp_path / "raw" / ".staging") + non_directory = staging_root / f"{lake_module._raw_stage_prefix(reference)}file" + non_directory.write_bytes(b"not-a-directory") + assert lake_module._recover_raw_staging(tmp_path, reference, manifest) is None + + assert lake_module._is_reparse_point(tmp_path / "missing") is False + monkeypatch.setattr(lake_module, "_is_reparse_point", lambda _: True) + with pytest.raises(ValidationError, match="cannot be a reparse point"): + lake_module._resolved_lake_root(tmp_path, create=False) + monkeypatch.undo() + + archive = tmp_path.parent / f"{tmp_path.name}-archive.bin" + archive.write_bytes(b"archive") + assert lake_module._local_archive_path(archive.as_uri()) == archive.resolve() + with pytest.raises(ValidationError, match="non-empty"): + lake_module._local_archive_path(" ") + with pytest.raises(ValidationError, match="Remote archive cleanup"): + lake_module._local_archive_path("https://example.invalid/archive.bin") + with pytest.raises(ValidationError, match="missing, unreadable"): + lake_module._local_archive_path("relative-missing.bin") + + +def test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed(tmp_path: Path) -> None: + raw_root = tmp_path / "raw-audit" + manifest = write_raw_bytes( + raw_root, + source="binance", + request={"fixture": "audit"}, + collected_at="2026-01-02T00:00:00Z", + payload=b"audit", + idempotency_key="audit", + policy=TEST_POLICY, + ) + reference = manifest.reference() + tombstone = lake_module._raw_tombstone_path(raw_root, reference) + tombstone.parent.mkdir(parents=True, exist_ok=True) + tombstone.write_bytes(b"not-json") + with pytest.raises(ValidationError, match="audit is unreadable"): + lake_module._read_cleanup_audit(raw_root, reference) + tombstone.write_text(json.dumps({"audit_sha256": "0" * 64}), encoding="utf-8") + with pytest.raises(ValidationError, match="audit integrity changed"): + lake_module._read_cleanup_audit(raw_root, reference) + + unreadable_root = tmp_path / "claim-unreadable" + unreadable = legacy_normalized(unreadable_root) + unreadable_claim = unreadable.event_claims[0] + unreadable_path = lake_module._event_claim_path(unreadable_root, unreadable_claim) + unreadable_path.write_bytes(b"not-json") + with pytest.raises(ValidationError, match="claim is unreadable"): + lake_module._validate_event_claim(unreadable_root, unreadable_claim) + + malformed_root = tmp_path / "claim-malformed" + malformed = legacy_normalized(malformed_root) + malformed_claim = malformed.event_claims[0] + malformed_path = lake_module._event_claim_path(malformed_root, malformed_claim) + payload = json.loads(malformed_path.read_text(encoding="utf-8")) + payload.pop("event_id") + malformed_path.write_text(json.dumps(payload), encoding="utf-8") + with pytest.raises(ValidationError, match="claim is malformed"): + lake_module._validate_event_claim(malformed_root, malformed_claim) + + absent = lake_module._event_claim_reference( + TRADE_EVENT_SCHEMA_ID, + trade("not-present-in-any-snapshot"), + ) + assert lake_module._recover_missing_event_claim(malformed_root, absent) is False + + def readdress_curated( root: Path, snapshot_id: str, diff --git a/tests/test_l2_replay.py b/tests/test_l2_replay.py index 48c3335..ebe335f 100644 --- a/tests/test_l2_replay.py +++ b/tests/test_l2_replay.py @@ -191,3 +191,78 @@ def test_snapshot_and_delta_time_and_sequence_must_strictly_advance() -> None: backwards["available_at"] = backwards["event_time"] with pytest.raises(L2ReplayError, match="moved backwards"): reconstructor.apply_delta(backwards) + + +def test_validated_snapshot_and_batch_guards_preserve_state() -> None: + reconstructor = L2BookReconstructor() + initial = reconstructor.apply_snapshot(snapshot()) + + resync = snapshot() + resync["event_id"] = "snapshot-200" + resync["sequence"] = 200 + resync["event_time"] = "2026-01-02T00:01:00Z" + resync["received_at"] = resync["event_time"] + resync["available_at"] = resync["event_time"] + assert reconstructor.apply_snapshot(resync).sequence == 200 + + empty_level = deepcopy(resync) + empty_level["sequence"] = 201 + empty_level["bids"][0]["quantity"]["units"] = 0 + with pytest.raises(L2ReplayError, match="empty price levels"): + reconstructor._apply_validated_snapshot_state(empty_level) + + mixed_scale = deepcopy(resync) + mixed_scale["sequence"] = 201 + mixed_scale["asks"][0]["price"]["scale"] = 3 + with pytest.raises(L2ReplayError, match="price scales differ"): + reconstructor._apply_validated_snapshot_state(mixed_scale) + assert reconstructor.checkpoint().sequence == 200 + assert initial.sequence == 100 + + +def test_private_validated_dispatch_and_uniform_batch_fail_closed() -> None: + reconstructor = L2BookReconstructor() + with pytest.raises(L2ReplayError, match="Unsupported"): + reconstructor._apply_without_checkpoint({"event_type": "trade"}) + with pytest.raises(L2ReplayError, match="Unsupported"): + reconstructor._apply_validated_without_checkpoint({"event_type": "trade"}) + with pytest.raises(L2ReplayError, match="start from a BookSnapshot"): + reconstructor._apply_validated_uniform_upsert_batch( + source="binance", + instrument_id="BTC-USDT-SPOT", + session_id="binance-24x7-BTC-USDT-SPOT", + first_previous_sequence=100, + final_sequence=101, + first_event_time="2026-01-02T00:00:01Z", + final_event_time="2026-01-02T00:00:01Z", + side="bid", + price_units=100_000, + price_scale=2, + quantity_units=25, + quantity_scale=3, + ) + + reconstructor.apply_snapshot(snapshot()) + arguments = { + "source": "binance", + "instrument_id": "BTC-USDT-SPOT", + "session_id": "binance-24x7-BTC-USDT-SPOT", + "first_previous_sequence": 100, + "final_sequence": 101, + "first_event_time": "2026-01-02T00:00:01Z", + "final_event_time": "2026-01-02T00:00:01Z", + "side": "bid", + "price_units": 100_000, + "price_scale": 2, + "quantity_units": 25, + "quantity_scale": 3, + } + wrong_identity = {**arguments, "source": "okx"} + with pytest.raises(L2ReplayError, match="identity changed"): + reconstructor._apply_validated_uniform_upsert_batch(**wrong_identity) + non_advancing = {**arguments, "final_sequence": 100} + with pytest.raises(L2ReplayError, match="strictly advance"): + reconstructor._apply_validated_uniform_upsert_batch(**non_advancing) + wrong_scale = {**arguments, "price_scale": 3} + with pytest.raises(L2ReplayError, match="price scale changed"): + reconstructor._apply_validated_uniform_upsert_batch(**wrong_scale) diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index c91587b..1bba472 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -2,6 +2,7 @@ import json from datetime import datetime, timedelta, timezone +from importlib.metadata import version from pathlib import Path import quant_data_kit as qdk @@ -36,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == "0.6.0" + assert qdk.__version__ == version("quant-data-kit") == "0.6.1" for name in ( "write_raw_bytes", "write_normalized_events", @@ -50,6 +51,13 @@ def test_public_m2_api_and_version_are_exposed() -> None: assert getattr(qdk, name) is not None +def test_build_and_runtime_versions_share_one_authoritative_source() -> None: + project = (Path(__file__).parents[1] / "pyproject.toml").read_text(encoding="utf-8") + assert 'dynamic = ["version"]' in project + assert 'version = { attr = "quant_data_kit._version.__version__" }' in project + assert '\nversion = "0.6.1"\n' not in project + + def test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable(tmp_path: Path) -> None: provider = "binance" fixture_path = FIXTURES / provider / "events.json" diff --git a/tests/test_m2_process_integrity.py b/tests/test_m2_process_integrity.py index 070d0ab..54d3d6e 100644 --- a/tests/test_m2_process_integrity.py +++ b/tests/test_m2_process_integrity.py @@ -1,6 +1,5 @@ from __future__ import annotations -import json import multiprocessing import os from copy import deepcopy @@ -539,8 +538,9 @@ def test_event_claim_reuse_conflict_tamper_and_publish_retry( first = _normalized(root, key="claim-1", record=record) second = _normalized(root, key="claim-2", record=deepcopy(record)) assert first.snapshot_id != second.snapshot_id - claim_files = list((root / "normalized" / "event-claims").rglob("*.json")) - assert len(claim_files) == 1 + claim_files = list((root / "normalized" / "event-claim-index-v3").rglob("*.parquet")) + assert len(claim_files) == 2 + assert not list((root / "normalized" / "event-claims").rglob("*.json")) changed = deepcopy(record) changed["price"]["units"] += 1 @@ -555,10 +555,13 @@ def test_event_claim_reuse_conflict_tamper_and_publish_retry( policy=TEST_POLICY, ) - claim_payload = json.loads(claim_files[0].read_text(encoding="utf-8")) - claim_payload["event_sha256"] = "0" * 64 - claim_files[0].write_text(json.dumps(claim_payload), encoding="utf-8") - with pytest.raises(ValidationError, match="integrity changed|Conflicting"): + first_claim = next( + (root / "normalized" / "event-claim-index-v3" / f"snapshot={first.snapshot_id}").rglob( + "*.parquet" + ) + ) + first_claim.write_bytes(first_claim.read_bytes() + b"tampered") + with pytest.raises(ValidationError, match="physical content changed"): load_normalized_snapshot(root, first.snapshot_id) retry_root = tmp_path / "claim-retry" @@ -584,7 +587,7 @@ def fail_snapshot_publish(source: Path, destination: Path) -> None: policy=TEST_POLICY, ) monkeypatch.setattr(lake_module.os, "replace", real_replace) - assert list((retry_root / "normalized" / "event-claims").rglob("*.json")) + assert not list((retry_root / "normalized" / "event-claim-index-v3").rglob("*.parquet")) retried = write_normalized_events( retry_root, [trade("retry-claim")], @@ -634,28 +637,29 @@ def test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding(tmp_pa root = tmp_path / "event-claim-recovery" record = trade("recover-global-id") original = _normalized(root, key="original", record=record) - claim_path = next((root / "normalized" / "event-claims").rglob("*.json")) + index_root = root / "normalized" / "event-claim-index-v3" / f"snapshot={original.snapshot_id}" + claim_path = next(index_root.rglob("*.parquet")) claim_path.unlink() repeated = _normalized(root, key="repeated", record=deepcopy(record)) assert repeated.snapshot_id != original.snapshot_id assert load_normalized_snapshot(root, original.snapshot_id) == original - assert claim_path.is_file() + assert list(index_root.rglob("*.parquet")) - claim_path.unlink() + next(index_root.rglob("*.parquet")).unlink() changed = deepcopy(record) changed["price"]["units"] += 1 with pytest.raises(ValidationError, match="Conflicting lake event_id claim"): _normalized(root, key="changed", record=changed) - assert not claim_path.exists() + assert list(index_root.rglob("*.parquet")) def test_deleted_event_claim_recovery_is_process_safe(tmp_path: Path) -> None: root = tmp_path / "event-claim-process-recovery" record = trade("recover-process-id") original = _normalized(root, key="original", record=record) - claim_path = next((root / "normalized" / "event-claims").rglob("*.json")) - claim_path.unlink() + index_root = root / "normalized" / "event-claim-index-v3" / f"snapshot={original.snapshot_id}" + next(index_root.rglob("*.parquet")).unlink() admitted = _raw(root, key="same", payload=b"same") results, exit_codes = _run_pair( _normalized_process, @@ -666,10 +670,10 @@ def test_deleted_event_claim_recovery_is_process_safe(tmp_path: Path) -> None: ) assert exit_codes == [0, 0] assert [status for status, _ in results] == ["ok", "ok"], results - assert claim_path.is_file() + assert list(index_root.rglob("*.parquet")) assert load_normalized_snapshot(root, original.snapshot_id) == original - claim_path.unlink() + next(index_root.rglob("*.parquet")).unlink() changed_raw = _raw(root, key="changed", payload=b"changed") changed = deepcopy(record) changed["price"]["units"] += 1 diff --git a/tests/test_normalized_v3.py b/tests/test_normalized_v3.py new file mode 100644 index 0000000..0f73383 --- /dev/null +++ b/tests/test_normalized_v3.py @@ -0,0 +1,576 @@ +from __future__ import annotations + +import json +import shutil +from copy import deepcopy +from datetime import datetime, timezone +from pathlib import Path + +import pyarrow as pa +import pytest + +import quant_data_kit.data_lake as lake_module +from quant_data_kit import normalized_v3 +from quant_data_kit.data_lake import ( + CollectionStoppedError, + StoragePolicy, + load_normalized_snapshot, + read_normalized_events, + write_normalized_batches, + write_normalized_events, + write_raw_bytes, +) +from quant_data_kit.exceptions import ValidationError +from quant_data_kit.schemas_v2 import validate_json_record +from tests.test_adapters_v2 import binance_adapter, load_messages +from tests.test_l2_replay import delta, snapshot +from tests.test_m2_audit_regressions import trade + +TEST_POLICY = StoragePolicy( + hot_quota_bytes=1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, +) + + +def _record_batch(records: list[dict]) -> pa.RecordBatch: + schema_id = lake_module._event_schema_id(records[0]) + schema = normalized_v3.get_arrow_schema(schema_id) + prepared = normalized_v3._arrow_ready_rows(schema, [deepcopy(record) for record in records]) + return pa.RecordBatch.from_pylist(prepared, schema=schema) + + +def _strict_batches( + root: Path, + batches, + *, + key: str, + policy: StoragePolicy = TEST_POLICY, + expected_l2_checkpoint_hashes=None, +): + admitted = _raw(root, key) + return write_normalized_batches( + root, + batches, + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + expected_l2_checkpoint_hashes=expected_l2_checkpoint_hashes, + policy=policy, + ) + + +def _assert_no_snapshot(root: Path) -> None: + snapshots = root / "normalized" / "snapshots" + assert not snapshots.exists() or not list(snapshots.glob("sha256-*")) + + +def _raw(root: Path, key: str = "normalized-v3"): + return write_raw_bytes( + root, + source="binance", + request={"fixture": key}, + collected_at="2026-01-02T00:00:00Z", + payload=key.encode(), + idempotency_key=key, + policy=TEST_POLICY, + ) + + +def test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims( + tmp_path: Path, +) -> None: + from quant_data_kit.adapters_v2 import adapt_fixture_messages + + records = adapt_fixture_messages(binance_adapter(), load_messages("binance")) + legacy_root = tmp_path / "legacy" + current_root = tmp_path / "current" + legacy_raw = _raw(legacy_root) + current_raw = _raw(current_root) + legacy = lake_module._write_normalized_events_legacy( + legacy_root, + records, + provider="binance", + venue="BINANCE", + upstream_raw_references=[legacy_raw.reference()], + policy=TEST_POLICY, + ) + current = write_normalized_events( + current_root, + iter(records), + provider="binance", + venue="BINANCE", + upstream_raw_references=[current_raw.reference()], + policy=TEST_POLICY, + ) + assert legacy.snapshot is not None and current.snapshot is not None + assert legacy.accepted_rows == current.accepted_rows == len(records) + assert legacy.quarantined_rows == current.quarantined_rows == 0 + legacy_partitions = { + (item.event_type, item.trading_date, item.instrument_id): item + for item in legacy.snapshot.partitions + } + current_partitions = { + (item.event_type, item.trading_date, item.instrument_id): item + for item in current.snapshot.partitions + } + assert legacy_partitions.keys() == current_partitions.keys() + for key, legacy_partition in legacy_partitions.items(): + current_partition = current_partitions[key] + assert current_partition.rows == legacy_partition.rows + assert current_partition.logical_sha256 == legacy_partition.logical_sha256 + assert tuple(current.snapshot.event_claims) == tuple(legacy.snapshot.event_claims) + for event_type in {record["event_type"] for record in records}: + assert read_normalized_events( + current_root, + current.snapshot.snapshot_id, + event_type=event_type, + ) == read_normalized_events( + legacy_root, + legacy.snapshot.snapshot_id, + event_type=event_type, + ) + assert current.snapshot.layout_version == normalized_v3.LAYOUT_VERSION + assert current.snapshot.l2_checkpoints + + +def test_native_writer_validator_matches_frozen_validator_for_l2_edges() -> None: + valid = [snapshot(), delta(101, 100)] + invalid = [] + wrong_previous = delta(101, 100) + wrong_previous["previous_sequence"] = 101 + invalid.append(wrong_previous) + crossed = snapshot() + crossed["bids"][0]["price"] = deepcopy(crossed["asks"][0]["price"]) + invalid.append(crossed) + negative_quantity = delta(101, 100) + negative_quantity["quantity"]["units"] = -1 + invalid.append(negative_quantity) + for record in valid: + schema_id = lake_module._event_schema_id(record) + validate_json_record(schema_id, deepcopy(record)) + normalized_v3._validate_event_record(schema_id, deepcopy(record)) + for record in invalid: + schema_id = lake_module._event_schema_id(record) + with pytest.raises(ValidationError): + validate_json_record(schema_id, deepcopy(record)) + with pytest.raises(ValidationError): + normalized_v3._validate_event_record(schema_id, deepcopy(record)) + + +def test_v3_manifest_is_compact_and_does_not_create_per_event_json(tmp_path: Path) -> None: + admitted = _raw(tmp_path) + records = [snapshot()] + for sequence in range(101, 1101): + item = delta(101, 100) + item["event_id"] = f"delta-{sequence}" + item["sequence"] = sequence + item["previous_sequence"] = sequence - 1 + records.append(item) + result = write_normalized_events( + tmp_path, + records, + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + manifest_path = ( + tmp_path / "normalized" / "snapshots" / result.snapshot.snapshot_id / "manifest.json" + ) + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + assert "event_claims" not in manifest + assert manifest["event_claim_index"]["rows"] == 1001 + assert manifest_path.stat().st_size < 100_000 + assert not (tmp_path / "normalized" / "event-claims").exists() + claim_files = list( + ( + tmp_path + / "normalized" + / "event-claim-index-v3" + / f"snapshot={result.snapshot.snapshot_id}" + ).rglob("*.parquet") + ) + assert 1 <= len(claim_files) <= 256 + + +def test_missing_claim_index_recovers_but_tampering_fails_closed(tmp_path: Path) -> None: + admitted = _raw(tmp_path) + result = write_normalized_events( + tmp_path, + [trade("claim-recovery")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + index_root = ( + tmp_path / "normalized" / "event-claim-index-v3" / f"snapshot={result.snapshot.snapshot_id}" + ) + next(index_root.rglob("*.parquet")).unlink() + recovered = load_normalized_snapshot(tmp_path, result.snapshot.snapshot_id) + assert recovered.snapshot_id == result.snapshot.snapshot_id + assert list(index_root.rglob("*.parquet")) + assert list((tmp_path / "normalized" / "event-claim-index-v3" / "recovery-evidence").iterdir()) + + claim_path = next(index_root.rglob("*.parquet")) + claim_path.write_bytes(claim_path.read_bytes() + b"tampered") + with pytest.raises(ValidationError, match="physical content changed"): + load_normalized_snapshot(tmp_path, result.snapshot.snapshot_id) + + shutil.rmtree(index_root) + recovered_again = load_normalized_snapshot(tmp_path, result.snapshot.snapshot_id) + assert recovered_again.snapshot_id == result.snapshot.snapshot_id + + +def test_streaming_writer_applies_capacity_gate_before_partition_write(tmp_path: Path) -> None: + admitted = _raw(tmp_path) + stopped = StoragePolicy( + hot_quota_bytes=1, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, + ) + with pytest.raises(CollectionStoppedError, match="COLLECTION_STOPPED"): + write_normalized_events( + tmp_path, + [trade("capacity-stop")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=stopped, + ) + assert not list((tmp_path / "normalized" / "snapshots").glob("sha256-*")) + + +def test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints( + tmp_path: Path, +) -> None: + from tools.benchmark_normalized_l2 import synthetic_l2_batches, synthetic_l2_events + + mapping_root = tmp_path / "mapping" + arrow_root = tmp_path / "arrow" + mapping_raw = _raw(mapping_root, "same-input") + mapping = write_normalized_events( + mapping_root, + synthetic_l2_events(32), + provider="binance", + venue="BINANCE", + upstream_raw_references=[mapping_raw.reference()], + policy=TEST_POLICY, + ) + arrow = _strict_batches( + arrow_root, + synthetic_l2_batches(32, 8), + key="same-input", + ) + assert mapping.snapshot is not None and arrow.snapshot is not None + assert arrow.accepted_rows == mapping.accepted_rows == 32 + assert tuple(arrow.snapshot.event_claims) == tuple(mapping.snapshot.event_claims) + assert arrow.snapshot.l2_checkpoints == mapping.snapshot.l2_checkpoints + assert arrow.snapshot.partition_logical_hash_version == normalized_v3.ARROW_IPC_PARTITION_HASH + assert mapping.snapshot.partition_logical_hash_version == ( + normalized_v3.CANONICAL_JSON_PARTITION_HASH + ) + for event_type in ("book_snapshot", "book_delta"): + assert read_normalized_events( + arrow_root, + arrow.snapshot.snapshot_id, + event_type=event_type, + ) == read_normalized_events( + mapping_root, + mapping.snapshot.snapshot_id, + event_type=event_type, + ) + assert load_normalized_snapshot(arrow_root, arrow.snapshot.snapshot_id) == arrow.snapshot + + +def test_record_batch_reader_is_a_supported_strict_input(tmp_path: Path) -> None: + batch = _record_batch([snapshot()]) + reader = pa.RecordBatchReader.from_batches(batch.schema, [batch]) + result = _strict_batches(tmp_path, reader, key="reader") + assert result.snapshot is not None + assert result.accepted_rows == 1 + assert result.quarantined_rows == 0 + + +def test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries( + tmp_path: Path, +) -> None: + from tools.benchmark_normalized_l2 import synthetic_l2_batches + + narrow = _strict_batches( + tmp_path / "narrow", + synthetic_l2_batches(131_089, 7_919), + key="same-layout-input", + ) + wide = _strict_batches( + tmp_path / "wide", + synthetic_l2_batches(131_089, 100_003), + key="same-layout-input", + ) + assert narrow.snapshot is not None and wide.snapshot is not None + assert narrow.snapshot.snapshot_id == wide.snapshot.snapshot_id + assert narrow.snapshot.partitions == wide.snapshot.partitions + assert narrow.snapshot.event_claim_index == wide.snapshot.event_claim_index + + +def test_arrow_schema_pit_sequence_and_duplicate_fail_closed(tmp_path: Path) -> None: + from tools.benchmark_normalized_l2 import synthetic_l2_batches + + cases: list[tuple[str, list[pa.RecordBatch], str]] = [] + valid = list(synthetic_l2_batches(4, 8)) + delta_batch = valid[1] + sequence_index = delta_batch.schema.get_field_index("sequence") + wrong_schema = delta_batch.set_column( + sequence_index, + "sequence", + pa.array([2, 3, 4], type=pa.int32()), + ) + cases.append(("schema", [valid[0], wrong_schema], "Arrow schema mismatch")) + + received_index = delta_batch.schema.get_field_index("received_at") + earlier = pa.repeat( + pa.scalar( + datetime(2025, 12, 31, 23, 59, 59, tzinfo=timezone.utc), + type=pa.timestamp("ns", tz="UTC"), + ), + delta_batch.num_rows, + ) + pit = delta_batch.set_column( + received_index, + delta_batch.schema.field(received_index), + earlier, + ) + cases.append(("pit", [valid[0], pit], "received_at must not be earlier")) + + repeated_sequence = delta_batch.set_column( + sequence_index, + delta_batch.schema.field(sequence_index), + pa.array([2, 2, 4], type=pa.int64()), + ) + cases.append(("sequence", [valid[0], repeated_sequence], "previous_sequence")) + + event_id_index = delta_batch.schema.get_field_index("event_id") + duplicate_ids = delta_batch.set_column( + event_id_index, + delta_batch.schema.field(event_id_index), + pa.array(["duplicate", "duplicate", "unique"]), + ) + cases.append(("duplicate", [valid[0], duplicate_ids], "duplicate claims")) + + for name, batches, message in cases: + root = tmp_path / name + with pytest.raises((ValidationError, pa.ArrowInvalid), match=message): + _strict_batches(root, batches, key=name) + _assert_no_snapshot(root) + + +def test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected( + tmp_path: Path, +) -> None: + crossed = snapshot() + crossed["bids"][0]["price"] = deepcopy(crossed["asks"][0]["price"]) + absent_delete = delta( + 101, + 100, + action="delete", + price_units=98_000, + quantity_units=0, + ) + heartbeat = delta(101, 101) + reset = delta(90, 89) + for name in ("event_time", "received_at", "available_at"): + reset[name] = "2026-01-02T00:00:02Z" + cases = [ + ("crossed", [_record_batch([crossed])], "locked or crossed"), + ( + "absent-delete", + [_record_batch([snapshot()]), _record_batch([absent_delete])], + "absent price level", + ), + ( + "equal-sequence-heartbeat", + [_record_batch([snapshot()]), _record_batch([heartbeat])], + "previous_sequence must precede sequence", + ), + ( + "maintenance-reset", + [_record_batch([snapshot()]), _record_batch([reset])], + "expected previous_sequence=100", + ), + ] + for name, batches, message in cases: + root = tmp_path / name + with pytest.raises(ValidationError, match=message): + _strict_batches(root, batches, key=name) + _assert_no_snapshot(root) + + +def test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed( + tmp_path: Path, +) -> None: + conflict_root = tmp_path / "claim-conflict" + first = _strict_batches(conflict_root, [_record_batch([snapshot()])], key="first") + assert first.snapshot is not None + changed = snapshot() + changed["bids"][0]["quantity"]["units"] += 1 + with pytest.raises(ValidationError, match="Conflicting lake event_id claim"): + _strict_batches(conflict_root, [_record_batch([changed])], key="changed") + assert len(list((conflict_root / "normalized" / "snapshots").glob("sha256-*"))) == 1 + + capacity_root = tmp_path / "capacity" + stopped = StoragePolicy( + hot_quota_bytes=1, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, + ) + with pytest.raises(CollectionStoppedError, match="COLLECTION_STOPPED"): + _strict_batches( + capacity_root, + [_record_batch([snapshot()])], + key="capacity", + policy=stopped, + ) + _assert_no_snapshot(capacity_root) + + first_trade = trade("trade-1", timestamp="2026-01-02T00:00:02Z") + second_trade = trade("trade-2", timestamp="2026-01-02T00:00:01Z") + second_trade["sequence"] = 2 + order_root = tmp_path / "nonmonotonic" + with pytest.raises(ValidationError, match="sort order moved backwards"): + _strict_batches( + order_root, + [_record_batch([first_trade, second_trade])], + key="nonmonotonic", + ) + _assert_no_snapshot(order_root) + + +def test_arrow_float_schema_preserves_frozen_claims_and_logical_rows(tmp_path: Path) -> None: + from quant_data_kit.adapters_v2 import adapt_fixture_messages + + funding = next( + record + for record in adapt_fixture_messages(binance_adapter(), load_messages("binance")) + if record["event_type"] == "funding_rate" + ) + mapping_root = tmp_path / "float-mapping" + arrow_root = tmp_path / "float-arrow" + admitted = _raw(mapping_root, "float") + mapping = write_normalized_events( + mapping_root, + [funding], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + arrow = _strict_batches(arrow_root, [_record_batch([funding])], key="float") + assert mapping.snapshot is not None and arrow.snapshot is not None + assert tuple(arrow.snapshot.event_claims) == tuple(mapping.snapshot.event_claims) + assert read_normalized_events( + arrow_root, + arrow.snapshot.snapshot_id, + event_type="funding_rate", + ) == read_normalized_events( + mapping_root, + mapping.snapshot.snapshot_id, + event_type="funding_rate", + ) + + +def test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary( + tmp_path: Path, +) -> None: + first = trade("whole-second", timestamp="2026-01-02T00:00:01Z") + second = trade("fractional-second", timestamp="2026-01-02T00:00:01.001Z") + second["sequence"] = 2 + mapping_root = tmp_path / "mapping" + arrow_root = tmp_path / "arrow" + mapping_raw = _raw(mapping_root, "fractional-order") + mapping = write_normalized_events( + mapping_root, + [first, second], + provider="binance", + venue="BINANCE", + upstream_raw_references=[mapping_raw.reference()], + policy=TEST_POLICY, + ) + arrow = _strict_batches( + arrow_root, + [_record_batch([first, second])], + key="fractional-order", + ) + assert mapping.snapshot is not None and arrow.snapshot is not None + assert mapping.accepted_rows == arrow.accepted_rows == 2 + assert read_normalized_events( + mapping_root, + mapping.snapshot.snapshot_id, + event_type="trade", + ) == read_normalized_events( + arrow_root, + arrow.snapshot.snapshot_id, + event_type="trade", + ) + + +def test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices( + tmp_path: Path, +) -> None: + records = [trade(f"claim-{index}") for index in range(4)] + for index, record in enumerate(records, start=1): + record["sequence"] = index + admitted = _raw(tmp_path, "claim-sequence") + result = write_normalized_events( + tmp_path, + records, + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + claims = result.snapshot.event_claims + materialized = tuple(claims) + assert len(claims) == 4 + assert claims[0] == materialized[0] + assert claims[-1] == materialized[-1] + assert claims[::2] == materialized[::2] + assert claims[:2] == materialized[:2] + assert claims[::-1] == materialized[::-1] + assert claims.__eq__(claims) is True + assert claims == materialized + assert claims != materialized[:-1] + assert "rows=4" in repr(claims) + with pytest.raises(IndexError): + _ = claims[4] + with pytest.raises(IndexError): + _ = claims[-5] + + +def test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + real_replace = normalized_v3.os.replace + injected = False + + def fail_snapshot_publish(source: Path, destination: Path) -> None: + nonlocal injected + if destination.parent.name == "snapshots" and not injected: + injected = True + raise OSError("injected strict snapshot publish failure") + real_replace(source, destination) + + monkeypatch.setattr(normalized_v3.os, "replace", fail_snapshot_publish) + with pytest.raises(OSError, match="strict snapshot publish"): + _strict_batches(tmp_path, [_record_batch([snapshot()])], key="atomic-arrow") + _assert_no_snapshot(tmp_path) + assert not list((tmp_path / "normalized" / "event-claim-index-v3").rglob("*.parquet")) + + monkeypatch.setattr(normalized_v3.os, "replace", real_replace) + retried = _strict_batches(tmp_path, [_record_batch([snapshot()])], key="atomic-arrow") + assert retried.snapshot is not None + assert load_normalized_snapshot(tmp_path, retried.snapshot.snapshot_id) == retried.snapshot diff --git a/tests/test_normalized_v3_failures.py b/tests/test_normalized_v3_failures.py new file mode 100644 index 0000000..4c1b540 --- /dev/null +++ b/tests/test_normalized_v3_failures.py @@ -0,0 +1,1103 @@ +from __future__ import annotations + +import json +from collections.abc import Callable +from copy import deepcopy +from dataclasses import replace +from datetime import date, datetime, timedelta, timezone +from pathlib import Path +from typing import Any + +import pyarrow as pa +import pyarrow.parquet as pq +import pytest + +import quant_data_kit.data_lake as lake_module +from quant_data_kit import normalized_v3 +from quant_data_kit.data_lake import ( + load_normalized_snapshot, + write_normalized_batches, + write_normalized_events, +) +from quant_data_kit.exceptions import ValidationError +from quant_data_kit.l2_replay import L2ReplayError, replay_l2 +from quant_data_kit.schemas_v2 import BOOK_DELTA_EVENT_SCHEMA_ID +from tests.test_l2_replay import delta, snapshot +from tests.test_m2_audit_regressions import trade +from tests.test_normalized_v3 import ( + TEST_POLICY, + _assert_no_snapshot, + _raw, + _record_batch, + _strict_batches, +) + + +def _set_path(payload: dict[str, Any], path: tuple[str | int, ...], value: Any) -> None: + target: Any = payload + for part in path[:-1]: + target = target[part] + target[path[-1]] = value + + +@pytest.mark.parametrize( + ("factory", "path", "value", "message"), + [ + (snapshot, ("received_at",), "2026-01-01T23:59:59Z", "received_at"), + (snapshot, ("available_at",), "2026-01-01T23:59:59Z", "available_at"), + (snapshot, ("asks", 0, "price", "scale"), 3, "one scale"), + (snapshot, ("bids", 0, "price", "units"), 0, "price must be positive"), + (snapshot, ("bids", 0, "quantity", "units"), -1, "quantity must be non-negative"), + (snapshot, ("bids", 1, "price", "units"), 100_050, "bids must be strictly"), + (snapshot, ("asks", 1, "price", "units"), 100_050, "asks must be strictly"), + ( + lambda: delta(101, 100), + ("price", "units"), + 0, + "price must be positive", + ), + ( + lambda: delta(101, 100, action="delete"), + ("quantity", "units"), + 1, + "delete delta quantity", + ), + ( + lambda: delta(101, 100), + ("quantity", "units"), + 0, + "upsert delta quantity", + ), + ], +) +def test_native_l2_validator_exercises_failure_semantics( + factory: Callable[[], dict[str, Any]], + path: tuple[str | int, ...], + value: Any, + message: str, +) -> None: + record = factory() + _set_path(record, path, value) + schema_id = lake_module._event_schema_id(record) + with pytest.raises(ValidationError, match=message): + normalized_v3._validate_event_record(schema_id, record) + + +def test_input_spool_fallback_and_malformed_records_are_explicit( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + monkeypatch.setattr(normalized_v3, "_BATCH_ROWS", 2) + spool_path = tmp_path / "spool.json-seq" + with normalized_v3._InputSpool(spool_path) as spool: + spool.append({"value": 1}) + spool.append({"value": object()}) + spool.flush() + rows = list(normalized_v3._iter_spooled_records(spool_path)) + assert rows[0] == {"value": 1} + assert rows[1]["value"]["invalid_type"] == "object" + + non_list = tmp_path / "non-list.json-seq" + non_list.write_bytes(b"\n{}\n") + with pytest.raises(ValidationError, match="batch is malformed"): + list(normalized_v3._iter_spooled_records(non_list)) + non_record = tmp_path / "non-record.json-seq" + non_record.write_bytes(b"[1]\n") + with pytest.raises(ValidationError, match="record is malformed"): + list(normalized_v3._iter_spooled_records(non_record)) + + assert normalized_v3._has_non_finite(1.0) is False + assert normalized_v3._has_non_finite(float("nan")) is True + assert normalized_v3._has_non_finite({"nested": float("inf")}) is True + assert normalized_v3._has_non_finite([0, (float("-inf"),)]) is True + assert normalized_v3._has_non_finite("finite") is False + + +def test_digest_and_staging_corruption_guards( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + digest = normalized_v3._JsonArrayDigest(preserve_stdlib_float_format=True) + digest.update([]) + empty_hash = digest.hexdigest() + assert len(empty_hash) == 64 + + monkeypatch.setattr(normalized_v3, "_canonical_json_bytes", lambda _: b"{}") + with pytest.raises(ValidationError, match="serialization changed"): + digest.update([{"value": 1}]) + + root = lake_module._resolved_lake_root(tmp_path / "lake", create=True) + staging_root = root / "normalized" / "staging" + stale = staging_root / "normalized-batch-stream-stale" + stale.mkdir(parents=True) + with normalized_v3._streaming_stage(root) as stage: + assert stage.is_dir() + assert not stale.exists() + + invalid = staging_root / "normalized-batch-stream-file" + invalid.write_bytes(b"not-a-directory") + with ( + pytest.raises(ValidationError, match="not a directory"), + normalized_v3._streaming_stage(root), + ): + pass + + +def _rewrite_index_manifest( + manifest_path: Path, + mutate: Callable[[dict[str, Any]], None], +) -> None: + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + payload.pop("manifest_sha256") + mutate(payload) + payload["manifest_sha256"] = lake_module._sha256_bytes( + lake_module._canonical_json_bytes(payload) + ) + manifest_path.write_text(json.dumps(payload), encoding="utf-8") + + +@pytest.mark.parametrize("case", ["anchor", "identity", "unsafe", "duplicate", "unreadable"]) +def test_claim_index_manifest_tampering_fails_closed(tmp_path: Path, case: str) -> None: + root = tmp_path / case + result = _strict_batches(root, [_record_batch([snapshot()])], key=case) + assert result.snapshot is not None + index_root = ( + root / "normalized" / "event-claim-index-v3" / f"snapshot={result.snapshot.snapshot_id}" + ) + manifest_path = index_root / "manifest.json" + if case == "anchor": + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + payload["manifest_sha256"] = "0" * 64 + manifest_path.write_text(json.dumps(payload), encoding="utf-8") + message = "manifest integrity changed" + elif case == "identity": + _rewrite_index_manifest( + manifest_path, + lambda payload: payload.__setitem__("snapshot_id", "sha256-" + "0" * 64), + ) + message = "index identity changed" + elif case == "unsafe": + _rewrite_index_manifest( + manifest_path, + lambda payload: payload["files"][0].__setitem__("relative_path", "../escape.parquet"), + ) + message = "path is unsafe" + elif case == "duplicate": + _rewrite_index_manifest( + manifest_path, + lambda payload: payload["files"].append(deepcopy(payload["files"][0])), + ) + message = "duplicated" + else: + manifest_path.write_bytes(b"not-json") + message = "manifest is unreadable" + with pytest.raises(ValidationError, match=message): + load_normalized_snapshot(root, result.snapshot.snapshot_id) + + +def test_claim_index_schema_logical_shape_and_missing_manifest_paths( + tmp_path: Path, +) -> None: + unexpected_root = tmp_path / "unexpected" + unexpected = _strict_batches( + unexpected_root, + [_record_batch([snapshot()])], + key="unexpected", + ) + assert unexpected.snapshot is not None + unexpected_index = ( + unexpected_root + / "normalized" + / "event-claim-index-v3" + / f"snapshot={unexpected.snapshot.snapshot_id}" + ) + (unexpected_index / "unexpected.bin").write_bytes(b"unexpected") + with pytest.raises(ValidationError, match="unexpected or missing"): + load_normalized_snapshot(unexpected_root, unexpected.snapshot.snapshot_id) + + recovery_root = tmp_path / "missing-manifest" + recovery = _strict_batches( + recovery_root, + [_record_batch([snapshot()])], + key="missing-manifest", + ) + assert recovery.snapshot is not None + recovery_index = ( + recovery_root + / "normalized" + / "event-claim-index-v3" + / f"snapshot={recovery.snapshot.snapshot_id}" + ) + (recovery_index / "manifest.json").unlink() + assert ( + load_normalized_snapshot(recovery_root, recovery.snapshot.snapshot_id) == recovery.snapshot + ) + assert (recovery_index / "manifest.json").is_file() + + schema_root = tmp_path / "schema" + schema_result = _strict_batches(schema_root, [_record_batch([snapshot()])], key="schema") + assert schema_result.snapshot is not None + schema_index = ( + schema_root + / "normalized" + / "event-claim-index-v3" + / f"snapshot={schema_result.snapshot.snapshot_id}" + ) + schema_claim = next(schema_index.rglob("*.parquet")) + original = pq.ParquetFile(schema_claim).read() + changed_schema = pa.schema( + [pa.field("event_id_hash", pa.large_string()), *list(original.schema)[1:]] + ) + changed = pa.Table.from_arrays( + [original.column(0).cast(pa.large_string()), *original.columns[1:]], + schema=changed_schema, + ) + pq.write_table(changed, schema_claim) + schema_manifest = schema_index / "manifest.json" + _rewrite_index_manifest( + schema_manifest, + lambda payload: payload["files"][0].__setitem__( + "content_sha256", lake_module._sha256_file(schema_claim) + ), + ) + with pytest.raises(ValidationError, match="Arrow schema changed"): + load_normalized_snapshot(schema_root, schema_result.snapshot.snapshot_id) + + logical_root = tmp_path / "logical" + logical = _strict_batches(logical_root, [_record_batch([snapshot()])], key="logical") + assert logical.snapshot is not None + logical_index = ( + logical_root + / "normalized" + / "event-claim-index-v3" + / f"snapshot={logical.snapshot.snapshot_id}" + ) + logical_claim = next(logical_index.rglob("*.parquet")) + table = pq.ParquetFile(logical_claim).read() + changed_hash = pa.array(["f" * 64], type=pa.string()) + table = table.set_column(0, table.schema.field(0), changed_hash) + pq.write_table(table, logical_claim) + logical_manifest = logical_index / "manifest.json" + _rewrite_index_manifest( + logical_manifest, + lambda payload: payload["files"][0].__setitem__( + "content_sha256", lake_module._sha256_file(logical_claim) + ), + ) + with pytest.raises(ValidationError, match="logical content changed"): + load_normalized_snapshot(logical_root, logical.snapshot.snapshot_id) + + +def test_v3_claim_conflicts_include_historical_legacy_snapshots(tmp_path: Path) -> None: + legacy_raw = _raw(tmp_path, "legacy-source") + legacy = lake_module._write_normalized_events_legacy( + tmp_path, + [trade("legacy-event")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[legacy_raw.reference()], + policy=TEST_POLICY, + ) + assert legacy.snapshot is not None + + distinct_raw = _raw(tmp_path, "v3-distinct") + distinct = write_normalized_events( + tmp_path, + [trade("v3-event")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[distinct_raw.reference()], + policy=TEST_POLICY, + ) + assert distinct.snapshot is not None + legacy_index = ( + tmp_path / "normalized" / "event-claim-index-v3" / f"snapshot={legacy.snapshot.snapshot_id}" + ) + assert list(legacy_index.rglob("*.parquet")) + + conflict = trade("legacy-event") + conflict["price"]["units"] += 1 + conflict_raw = _raw(tmp_path, "v3-conflict") + with pytest.raises(ValidationError, match="Conflicting lake event_id claim"): + write_normalized_events( + tmp_path, + [conflict], + provider="binance", + venue="BINANCE", + upstream_raw_references=[conflict_raw.reference()], + policy=TEST_POLICY, + ) + + +def _replace_column(batch: pa.RecordBatch, name: str, values: pa.Array) -> pa.RecordBatch: + index = batch.schema.get_field_index(name) + return batch.set_column(index, batch.schema.field(index), values) + + +@pytest.mark.parametrize( + ("case", "column", "values", "message"), + [ + ("side", "side", pa.array(["invalid"]), "side is invalid"), + ("action", "action", pa.array(["invalid"]), "action is invalid"), + ( + "price-zero", + "price", + pa.StructArray.from_arrays( + [pa.array([0], type=pa.int64()), pa.array([2], type=pa.int16())], + fields=list( + normalized_v3.get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID).field("price").type + ), + ), + "price must be positive", + ), + ( + "quantity-negative", + "quantity", + pa.StructArray.from_arrays( + [pa.array([-1], type=pa.int64()), pa.array([3], type=pa.int16())], + fields=list( + normalized_v3.get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + .field("quantity") + .type + ), + ), + "quantity must be non-negative", + ), + ( + "price-scale-negative", + "price", + pa.StructArray.from_arrays( + [pa.array([100_000], type=pa.int64()), pa.array([-1], type=pa.int16())], + fields=list( + normalized_v3.get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID).field("price").type + ), + ), + "scale is negative", + ), + ( + "quantity-scale-large", + "quantity", + pa.StructArray.from_arrays( + [pa.array([25], type=pa.int64()), pa.array([19], type=pa.int16())], + fields=list( + normalized_v3.get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + .field("quantity") + .type + ), + ), + "scale exceeds 18", + ), + ( + "previous-negative", + "previous_sequence", + pa.array([-1], type=pa.int64()), + "previous_sequence must be non-negative", + ), + ( + "previous-equal", + "previous_sequence", + pa.array([101], type=pa.int64()), + "previous_sequence must precede sequence", + ), + ], +) +def test_arrow_vector_delta_constraints_fail_closed( + tmp_path: Path, + case: str, + column: str, + values: pa.Array, + message: str, +) -> None: + changed = _replace_column(_record_batch([delta(101, 100)]), column, values) + with pytest.raises(ValidationError, match=message): + _strict_batches( + tmp_path / case, + [_record_batch([snapshot()]), changed], + key=case, + ) + _assert_no_snapshot(tmp_path / case) + + +@pytest.mark.parametrize( + ("case", "action", "quantity", "message"), + [ + ("delete-positive", "delete", 1, "action and quantity disagree"), + ("upsert-zero", "upsert", 0, "action and quantity disagree"), + ], +) +def test_arrow_vector_action_quantity_contract( + tmp_path: Path, + case: str, + action: str, + quantity: int, + message: str, +) -> None: + changed = delta(101, 100, action=action, quantity_units=quantity) + with pytest.raises(ValidationError, match=message): + _strict_batches( + tmp_path / case, + [_record_batch([snapshot()]), _record_batch([changed])], + key=case, + ) + + +def test_arrow_common_null_empty_precision_source_and_sequence_guards(tmp_path: Path) -> None: + base = _record_batch([delta(101, 100)]) + cases = [ + ("null", _replace_column(base, "event_id", pa.array([None], type=pa.string())), "null"), + ("empty", _replace_column(base, "event_id", pa.array([""])), "non-empty"), + ("source", _replace_column(base, "source", pa.array(["okx"])), "provider"), + ( + "sequence", + _replace_column(base, "sequence", pa.array([-1], type=pa.int64())), + "sequence must be non-negative", + ), + ] + nanosecond = pa.array( + [1767312000000000001], + type=pa.timestamp("ns", tz="UTC"), + ) + precision = base + for name in ("event_time", "received_at", "available_at"): + precision = _replace_column(precision, name, nanosecond) + cases.append(("precision", precision, "nanoseconds")) + for name, changed, message in cases: + root = tmp_path / name + with pytest.raises(ValidationError, match=message): + _strict_batches(root, [_record_batch([snapshot()]), changed], key=name) + _assert_no_snapshot(root) + + +def test_arrow_input_reference_and_empty_batch_contracts(tmp_path: Path) -> None: + root = tmp_path / "references" + admitted = _raw(root, "references") + batch = _record_batch([snapshot()]) + with pytest.raises(ValidationError, match="at least one trusted Raw"): + write_normalized_batches( + root, + [batch], + provider="binance", + venue="BINANCE", + upstream_raw_references=[], + policy=TEST_POLICY, + ) + with pytest.raises(ValidationError, match="duplicate Raw references"): + write_normalized_batches( + root, + [batch], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference(), admitted.reference()], + policy=TEST_POLICY, + ) + with pytest.raises(ValidationError, match="Raw source"): + write_normalized_batches( + root, + [batch], + provider="okx", + venue="OKX", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + with pytest.raises(ValidationError, match="RecordBatch objects"): + write_normalized_batches( + root, + [object()], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + empty = write_normalized_batches( + root, + [batch.slice(0, 0)], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert empty.snapshot is None + assert empty.accepted_rows == empty.quarantined_rows == 0 + + +def test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts(tmp_path: Path) -> None: + events = [ + snapshot(), + delta(101, 100, side="bid", price_units=100_000, quantity_units=26), + delta(102, 101, side="ask", price_units=100_100, quantity_units=27), + ] + replayed = replay_l2(events) + expected_hash = replayed.checkpoints[1].state_sha256 + stream = ("binance", "BTC-USDT-SPOT", "binance-24x7-BTC-USDT-SPOT") + result = _strict_batches( + tmp_path / "mixed", + [_record_batch([events[0]]), _record_batch(events[1:])], + key="mixed", + expected_l2_checkpoint_hashes={stream: {101: expected_hash}}, + ) + assert result.snapshot is not None + assert result.snapshot.l2_checkpoints[0].state_sha256 == replayed.final_checkpoint.state_sha256 + + failures = [ + ("mismatch", {stream: {102: "0" * 64}}, "checkpoint hash mismatch"), + ("missing", {stream: {999: "0" * 64}}, "not reached"), + ( + "absent-stream", + {("binance", "ETH-USDT-SPOT", "missing-session"): {1: "0" * 64}}, + "was not observed", + ), + ] + for name, expected, message in failures: + root = tmp_path / name + with pytest.raises(L2ReplayError, match=message): + _strict_batches( + root, + [_record_batch([events[0]]), _record_batch(events[1:])], + key=name, + expected_l2_checkpoint_hashes=expected, + ) + _assert_no_snapshot(root) + + +def test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing( + tmp_path: Path, +) -> None: + admitted = _raw(tmp_path, "mapping-missing-stream") + expected = {("binance", "ETH-USDT-SPOT", "missing-session"): {1: "0" * 64}} + with pytest.raises(L2ReplayError, match="was not observed"): + write_normalized_events( + tmp_path, + [trade("mapping-only-trade")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + expected_l2_checkpoint_hashes=expected, + policy=TEST_POLICY, + ) + _assert_no_snapshot(tmp_path) + + +def test_arrow_batches_reject_cross_batch_partition_time_regression(tmp_path: Path) -> None: + later = trade("later", timestamp="2026-01-02T00:00:02Z") + earlier = trade("earlier", timestamp="2026-01-02T00:00:01Z") + earlier["session_id"] = "second-session" + with pytest.raises(ValidationError, match="globally monotonic"): + _strict_batches( + tmp_path, + [_record_batch([later]), _record_batch([earlier])], + key="cross-batch-order", + ) + _assert_no_snapshot(tmp_path) + + +def test_mapping_unsorted_partition_is_sorted_without_changing_events(tmp_path: Path) -> None: + later = trade("later", timestamp="2026-01-02T00:00:02Z") + earlier = trade("earlier", timestamp="2026-01-02T00:00:01Z") + earlier["session_id"] = "second-session" + admitted = _raw(tmp_path, "mapping-sort") + result = write_normalized_events( + tmp_path, + [later, earlier], + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + rows = lake_module.read_normalized_events( + tmp_path, + result.snapshot.snapshot_id, + event_type="trade", + ) + assert [row["event_id"] for row in rows] == ["earlier", "later"] + + +def test_arrow_datetime_input_and_capacity_recheck_path( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + calls: list[int] = [] + real_capacity = normalized_v3.require_collection_capacity + + def observed_capacity(root: Path, *, projected_write_bytes: int, policy: Any) -> None: + calls.append(projected_write_bytes) + real_capacity(root, projected_write_bytes=projected_write_bytes, policy=policy) + + monkeypatch.setattr(normalized_v3, "_CAPACITY_CHECK_ROWS", 1) + monkeypatch.setattr(normalized_v3, "require_collection_capacity", observed_capacity) + result = _strict_batches( + tmp_path, + [_record_batch([snapshot()])], + key="capacity-recheck", + ) + assert result.snapshot is not None + assert len(calls) >= 3 + assert all(value >= 0 for value in calls) + + +def test_arrow_common_datetime_is_utc_and_partition_digest_is_strict(tmp_path: Path) -> None: + result = _strict_batches(tmp_path, [_record_batch([snapshot()])], key="scan") + assert result.snapshot is not None + partition = result.snapshot.partitions[0] + path = ( + tmp_path + / "normalized" + / "snapshots" + / result.snapshot.snapshot_id + / partition.relative_path + ) + with pytest.raises(ValidationError, match="Arrow schema mismatch"): + normalized_v3._scan_partition_arrow_ipc(path, "puresaber.trade-event") + unknown_root = tmp_path / "unknown-hash" + unknown_root.mkdir() + partitions = normalized_v3._PartitionSet(unknown_root, "binance", "BINANCE") + partitions.append(snapshot()) + partitions.close() + with pytest.raises(ValidationError, match="Unknown normalized partition logical hash"): + normalized_v3._partition_manifests( + partitions, + provider="binance", + venue="BINANCE", + logical_hash_version="unknown", + ) + + +def test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts() -> None: + schema = normalized_v3.get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + record = delta(101, 100) + timestamp = datetime(2026, 1, 2, tzinfo=timezone.utc) + record["event_time"] = timestamp + record["received_at"] = timestamp + record["available_at"] = timestamp + record["trading_day"] = date(2026, 1, 2) + prepared = normalized_v3._arrow_ready_rows(schema, [record]) + assert prepared[0]["event_time"] is timestamp + assert prepared[0]["trading_day"] == date(2026, 1, 2) + + digest = normalized_v3._JsonArrayDigest(preserve_stdlib_float_format=False) + digest.update([{"value": 1}]) + first = digest.hexdigest() + digest.update([{"value": 2}]) + assert digest.hexdigest() != first + + assert normalized_v3._contains_floating_type(pa.float64()) is True + assert normalized_v3._contains_floating_type(pa.struct([pa.field("x", pa.float64())])) + assert normalized_v3._contains_floating_type(pa.list_(pa.float64())) + assert normalized_v3._contains_floating_type(pa.int64()) is False + + +def test_partition_buffers_reject_internal_schema_and_sort_corruption( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + schema = normalized_v3.get_arrow_schema("puresaber.trade-event") + batch = _record_batch([trade("partition")]) + timestamp = datetime(2026, 1, 2, 0, 0, 1, 1000, tzinfo=timezone.utc) + key = (timestamp, 1, "partition") + partition = normalized_v3._OpenPartition( + key=("trade", "2026-01-02", "BTC-USDT-SPOT"), + schema_id="puresaber.trade-event", + relative_path=Path("data.parquet"), + path=tmp_path / "buffer" / "data.parquet", + buffer=[], + ) + assert partition.flush() == 0 + partition._flush_arrow_buffer() + partition.append(trade("partition")) + partition.append_record_batch(batch, first_sort_key=key, last_sort_key=key) + partition.close() + assert partition.rows == 2 + + reversed_partition = normalized_v3._OpenPartition( + key=("trade", "2026-01-02", "BTC-USDT-SPOT"), + schema_id="puresaber.trade-event", + relative_path=Path("data.parquet"), + path=tmp_path / "reversed" / "data.parquet", + buffer=[], + ) + with pytest.raises(ValidationError, match="sort order moved backwards"): + reversed_partition.append_record_batch( + batch, + first_sort_key=(timestamp + timedelta(seconds=1), 2, "later"), + last_sort_key=key, + ) + wrong_schema = _record_batch([snapshot()]) + with pytest.raises(ValidationError, match="Arrow schema mismatch"): + reversed_partition.append_record_batch( + wrong_schema, + first_sort_key=key, + last_sort_key=key, + ) + + mapping_set = normalized_v3._PartitionSet(tmp_path / "mapping-set", "binance", "BINANCE") + mapping_set.append(trade("mixed-schema")) + only_partition = next(iter(mapping_set.partitions.values())) + only_partition.schema_id = "puresaber.quote-event" + with pytest.raises(ValidationError, match="Mixed schemas"): + mapping_set.append(trade("mixed-schema-2")) + only_partition.schema_id = "puresaber.trade-event" + mapping_set.close() + + arrow_set = normalized_v3._PartitionSet(tmp_path / "arrow-set", "binance", "BINANCE") + arrow_set.append_record_batch( + batch, + schema_id="puresaber.trade-event", + event_type="trade", + trading_date="2026-01-02", + instrument_id="BTC-USDT-SPOT", + first_sort_key=key, + last_sort_key=key, + ) + with pytest.raises(ValidationError, match="Mixed schemas"): + arrow_set.append_record_batch( + batch, + schema_id="puresaber.quote-event", + event_type="trade", + trading_date="2026-01-02", + instrument_id="BTC-USDT-SPOT", + first_sort_key=key, + last_sort_key=key, + ) + arrow_set.close() + + monkeypatch.setattr(normalized_v3, "_BATCH_ROWS", 2) + bounded = normalized_v3._PartitionSet(tmp_path / "bounded", "binance", "BINANCE") + for index in range(4): + record = trade(f"bounded-{index}", instrument_id=f"INSTRUMENT-{index}") + bounded.append(record) + assert bounded.buffered_rows == 0 + bounded.close() + assert len(bounded.paths()) == 4 + assert schema == batch.schema + + +def test_partition_scans_and_empty_claim_helpers_are_defensive(tmp_path: Path) -> None: + records = [trade("scan-1"), trade("scan-2")] + records[1]["sequence"] = 2 + root = tmp_path / "scan" + admitted = _raw(root, "scan-rows") + result = write_normalized_events( + root, + records, + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert result.snapshot is not None + partition = result.snapshot.partitions[0] + path = root / "normalized" / "snapshots" / result.snapshot.snapshot_id / partition.relative_path + rows, logical = normalized_v3._scan_partition(path, partition.schema_id) + assert rows == 2 + assert logical == partition.logical_sha256 + with pytest.raises(ValidationError, match="Arrow schema mismatch"): + normalized_v3._scan_partition(path, "puresaber.quote-event") + assert normalized_v3._claim_shard_manifests_from_paths([]) == () + assert ( + normalized_v3._build_claim_index_files( + tmp_path, + (), + tmp_path / "empty-index", + tmp_path / "empty-temp", + ) + == () + ) + assert ( + normalized_v3._publish_quarantine_file( + root, + tmp_path / "does-not-need-to-exist", + provider="binance", + venue="BINANCE", + rows=0, + policy=TEST_POLICY, + ) + is None + ) + + +def test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish(tmp_path: Path) -> None: + events = [snapshot(), delta(101, 100)] + replayed = replay_l2(events) + stream = ("binance", "BTC-USDT-SPOT", "binance-24x7-BTC-USDT-SPOT") + expected = {stream: {101: replayed.final_checkpoint.state_sha256}} + first = _strict_batches( + tmp_path, + [_record_batch([events[0]]), _record_batch([events[1]])], + key="idempotent", + expected_l2_checkpoint_hashes=expected, + ) + second = _strict_batches( + tmp_path, + [_record_batch([events[0]]), _record_batch([events[1]])], + key="idempotent", + expected_l2_checkpoint_hashes=expected, + ) + assert first.snapshot is not None and second.snapshot is not None + assert first.snapshot.snapshot_id == second.snapshot.snapshot_id + + empty_expectation = _strict_batches( + tmp_path / "empty-expectation", + [_record_batch([events[0]])], + key="empty-expectation", + expected_l2_checkpoint_hashes={("binance", "ETH-USDT-SPOT", "not-observed"): {}}, + ) + assert empty_expectation.snapshot is not None + + +def test_arrow_existing_snapshot_collision_is_visible( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + first = _strict_batches(tmp_path, [_record_batch([snapshot()])], key="collision") + assert first.snapshot is not None + real_load = lake_module.load_normalized_snapshot + + def mismatched_load(root: Path, snapshot_id: str): + return replace(real_load(root, snapshot_id), logical_sha256="0" * 64) + + monkeypatch.setattr(lake_module, "load_normalized_snapshot", mismatched_load) + with pytest.raises(ValidationError, match="snapshot collision"): + _strict_batches(tmp_path, [_record_batch([snapshot()])], key="collision") + + +def test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed(tmp_path: Path) -> None: + malformed_root = tmp_path / "malformed" + malformed = _strict_batches( + malformed_root, + [_record_batch([snapshot()])], + key="malformed", + ) + assert malformed.snapshot is not None + manifest_path = ( + malformed_root + / "normalized" + / "snapshots" + / malformed.snapshot.snapshot_id + / "manifest.json" + ) + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + payload.pop("event_claim_index") + manifest_path.write_text(json.dumps(payload), encoding="utf-8") + with pytest.raises(ValidationError, match="manifest is malformed"): + load_normalized_snapshot(malformed_root, malformed.snapshot.snapshot_id) + + hash_root = tmp_path / "unknown-hash" + hashed = _strict_batches(hash_root, [_record_batch([snapshot()])], key="unknown-hash") + assert hashed.snapshot is not None + hash_manifest = ( + hash_root / "normalized" / "snapshots" / hashed.snapshot.snapshot_id / "manifest.json" + ) + hash_payload = json.loads(hash_manifest.read_text(encoding="utf-8")) + hash_payload["partition_logical_hash_version"] = "unknown" + identity = normalized_v3._snapshot_payload_v3( + provider=hash_payload["provider"], + venue=hash_payload["venue"], + created_at=hash_payload["created_at"], + upstream_raw_references=hashed.snapshot.upstream_raw_references, + partitions=hashed.snapshot.partitions, + event_claim_index=hashed.snapshot.event_claim_index, + l2_checkpoints=hashed.snapshot.l2_checkpoints, + partition_logical_hash_version="unknown", + ) + logical = lake_module._sha256_bytes(lake_module._canonical_json_bytes(identity)) + hash_payload["logical_sha256"] = logical + hash_payload["snapshot_id"] = f"sha256-{logical}" + hash_manifest.write_text(json.dumps(hash_payload), encoding="utf-8") + destination = hash_manifest.parent.with_name(hash_payload["snapshot_id"]) + hash_manifest.parent.rename(destination) + with pytest.raises(ValidationError, match="Unknown normalized partition logical hash"): + load_normalized_snapshot(hash_root, hash_payload["snapshot_id"]) + + +def test_mapping_invalid_stream_capacity_and_claim_count_faults( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + invalid_root = tmp_path / "invalid-stream" + admitted = _raw(invalid_root, "invalid-stream") + events = [snapshot(), delta(101, 99), delta(102, 101)] + invalid = write_normalized_events( + invalid_root, + events, + provider="binance", + venue="BINANCE", + upstream_raw_references=[admitted.reference()], + policy=TEST_POLICY, + ) + assert invalid.snapshot is None + assert invalid.quarantined_rows == 3 + + calls: list[int] = [] + real_capacity = normalized_v3.require_collection_capacity + + def observed_capacity(root: Path, *, projected_write_bytes: int, policy: Any) -> None: + calls.append(projected_write_bytes) + real_capacity(root, projected_write_bytes=projected_write_bytes, policy=policy) + + monkeypatch.setattr(normalized_v3, "_CAPACITY_CHECK_ROWS", 1) + monkeypatch.setattr(normalized_v3, "require_collection_capacity", observed_capacity) + capacity_root = tmp_path / "mapping-capacity" + capacity_raw = _raw(capacity_root, "mapping-capacity") + capacity = write_normalized_events( + capacity_root, + [trade("mapping-capacity")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[capacity_raw.reference()], + policy=TEST_POLICY, + ) + assert capacity.snapshot is not None + assert len(calls) >= 3 + + monkeypatch.setattr(normalized_v3, "_claim_shard_manifests", lambda _: ()) + mismatch_root = tmp_path / "mapping-claim-count" + mismatch_raw = _raw(mismatch_root, "mapping-claim-count") + with pytest.raises(ValidationError, match="claim row count changed"): + write_normalized_events( + mismatch_root, + [trade("mapping-claim-count")], + provider="binance", + venue="BINANCE", + upstream_raw_references=[mismatch_raw.reference()], + policy=TEST_POLICY, + ) + _assert_no_snapshot(mismatch_root) + + +def test_strict_claim_count_fault_does_not_publish( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + monkeypatch.setattr(normalized_v3, "_build_claim_index_files", lambda *_: ()) + with pytest.raises(ValidationError, match="claim row count changed"): + _strict_batches(tmp_path, [_record_batch([snapshot()])], key="claim-count") + _assert_no_snapshot(tmp_path) + + +def test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards( + tmp_path: Path, +) -> None: + two = [trade("uniform-1"), trade("uniform-2")] + two[1]["sequence"] = 2 + mixed_instrument = _record_batch(two) + mixed_instrument = _replace_column( + mixed_instrument, + "instrument_id", + pa.array(["BTC-USDT-SPOT", "ETH-USDT-SPOT"]), + ) + with pytest.raises(ValidationError, match="one instrument_id"): + _strict_batches(tmp_path / "instrument", [mixed_instrument], key="instrument") + + delta_batch = _record_batch([delta(101, 100)]) + quantity_type = delta_batch.schema.field("quantity").type + null_quantity = pa.StructArray.from_arrays( + [pa.array([None], type=pa.int64()), pa.array([3], type=pa.int16())], + fields=list(quantity_type), + ) + null_batch = _replace_column(delta_batch, "quantity", null_quantity) + with pytest.raises(ValidationError, match="null fixed-point"): + _strict_batches( + tmp_path / "null-fixed", + [_record_batch([snapshot()]), null_batch], + key="null-fixed", + ) + + missing_event_type = pa.RecordBatch.from_arrays( + [pa.array([1], type=pa.int64())], + names=["value"], + ) + with pytest.raises(ValidationError, match="at least one event_type"): + normalized_v3._validate_common_arrow_batch(missing_event_type, provider="binance") + + null_event_type = _replace_column( + _record_batch([trade("null-event-type")]), + "event_type", + pa.array([None], type=pa.string()), + ) + with pytest.raises(ValidationError, match="event_type must be non-null"): + _strict_batches( + tmp_path / "null-event-type", + [null_event_type], + key="null-event-type", + ) + + +def test_duplicate_spool_ignores_non_string_ids_and_finds_repeats(tmp_path: Path) -> None: + path = tmp_path / "duplicates.json-seq" + path.write_text( + json.dumps( + [ + {"event_id": 1}, + {"event_id": "duplicate"}, + {"event_id": "duplicate"}, + ] + ) + + "\n", + encoding="utf-8", + ) + assert normalized_v3._all_duplicate_ids_from_spool(path) == {"duplicate"} + + +def test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream(tmp_path: Path) -> None: + raw = _raw(tmp_path, "mapping-duplicate-l2-gap") + duplicate_one = delta(101, 100) + duplicate_two = delta(102, 101) + duplicate_one["event_id"] = "duplicate-l2" + duplicate_two["event_id"] = "duplicate-l2" + survivor = trade("unrelated-survivor") + survivor["instrument_id"] = "ETH-USDT-SPOT" + survivor["session_id"] = "binance-24x7-ETH-USDT-SPOT" + + result = write_normalized_events( + tmp_path, + [snapshot(), duplicate_one, duplicate_two, delta(103, 102), survivor], + provider="binance", + venue="BINANCE", + upstream_raw_references=[raw.reference()], + policy=TEST_POLICY, + ) + + assert result.snapshot is not None + assert result.accepted_rows == 1 + assert result.quarantined_rows == 4 + assert result.snapshot.rows == 1 + assert result.snapshot.l2_checkpoints == () + + +def test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams(tmp_path: Path) -> None: + spool_path = tmp_path / "duplicate-revalidation.json-seq" + with normalized_v3._InputSpool(spool_path) as spool: + spool.append(snapshot()) + observed = ("binance", "BTC-USDT-SPOT", "binance-24x7-BTC-USDT-SPOT") + absent_required = ("binance", "ETH-USDT-SPOT", "absent-required") + absent_empty = ("binance", "SOL-USDT-SPOT", "absent-empty") + already_invalid = ("binance", "XRP-USDT-SPOT", "already-invalid") + + invalid = normalized_v3._revalidate_streams_after_duplicate_exclusions( + spool_path, + provider="binance", + invalid_streams={already_invalid: "original failure"}, + duplicate_event_ids={"unrelated-duplicate"}, + expected_l2={ + observed: {999: "not-reached"}, + absent_required: {1: "not-observed"}, + absent_empty: {}, + already_invalid: {1: "ignored-after-original-failure"}, + }, + ) + + assert "not reached" in invalid[observed] + assert "removed by duplicate" in invalid[absent_required] + assert absent_empty not in invalid + assert invalid[already_invalid] == "original failure" + + assert ( + normalized_v3._revalidate_streams_after_duplicate_exclusions( + spool_path, + provider="binance", + invalid_streams={}, + duplicate_event_ids={"unrelated-duplicate"}, + expected_l2={observed: {}}, + ) + == {} + ) diff --git a/tools/benchmark_normalized_l2.py b/tools/benchmark_normalized_l2.py new file mode 100644 index 0000000..5568c61 --- /dev/null +++ b/tools/benchmark_normalized_l2.py @@ -0,0 +1,596 @@ +"""Run the M7 synthetic L2 normalization performance and determinism gate.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import platform +import shutil +import statistics +import subprocess +import sys +import tempfile +import threading +import time +from collections.abc import Iterator +from contextlib import contextmanager +from dataclasses import asdict +from datetime import date, datetime, timezone +from functools import wraps +from importlib.metadata import version +from pathlib import Path +from typing import Any, Self + +import psutil +import pyarrow as pa +import pyarrow.compute as pc + +from quant_data_kit import normalized_v3 +from quant_data_kit.data_lake import ( + StoragePolicy, + load_normalized_snapshot, + write_normalized_batches, + write_raw_bytes, +) +from quant_data_kit.schemas_v2 import ( + BOOK_DELTA_EVENT_SCHEMA_ID, + BOOK_SNAPSHOT_EVENT_SCHEMA_ID, + get_arrow_schema, +) + +_PROVIDER = "binance" +_VENUE = "BINANCE" +_INSTRUMENT = "BTC-USDT-SPOT" +_SESSION = "binance-24x7-BTC-USDT-SPOT" +_TIMESTAMP = "2026-01-02T00:00:00Z" +_TRADING_DAY = "2026-01-02" +_TIMESTAMP_VALUE = datetime(2026, 1, 2, tzinfo=timezone.utc) +_TRADING_DAY_VALUE = date(2026, 1, 2) +_GIB = 1024**3 + + +def synthetic_l2_events(rows: int) -> Iterator[dict[str, Any]]: + """Yield one snapshot and sequential same-book deltas in constant memory.""" + if rows < 2: + raise ValueError("rows must be at least 2") + yield { + "event_type": "book_snapshot", + "event_id": "m7-snapshot-1", + "instrument_id": _INSTRUMENT, + "event_time": _TIMESTAMP, + "received_at": _TIMESTAMP, + "available_at": _TIMESTAMP, + "source": _PROVIDER, + "trading_day": _TRADING_DAY, + "session_id": _SESSION, + "sequence": 1, + "bids": [ + { + "price": {"units": 10_000_000, "scale": 2}, + "quantity": {"units": 100_000, "scale": 3}, + "order_count": 10, + } + ], + "asks": [ + { + "price": {"units": 10_000_100, "scale": 2}, + "quantity": {"units": 100_000, "scale": 3}, + "order_count": 10, + } + ], + } + for sequence in range(2, rows + 1): + yield { + "event_type": "book_delta", + "event_id": f"m7-delta-{sequence}", + "instrument_id": _INSTRUMENT, + "event_time": _TIMESTAMP, + "received_at": _TIMESTAMP, + "available_at": _TIMESTAMP, + "source": _PROVIDER, + "trading_day": _TRADING_DAY, + "session_id": _SESSION, + "sequence": sequence, + "side": "bid", + "action": "upsert", + "price": {"units": 10_000_000, "scale": 2}, + "quantity": {"units": (sequence & 1023) + 1, "scale": 3}, + "previous_sequence": sequence - 1, + } + + +def _repeat(value: Any, data_type: pa.DataType, length: int) -> pa.Array: + return pa.repeat(pa.scalar(value, type=data_type), length) + + +def synthetic_l2_batches(rows: int, batch_rows: int) -> Iterator[pa.RecordBatch]: + """Yield schema-exact normalized Arrow batches without retaining the dataset.""" + if rows < 2: + raise ValueError("rows must be at least 2") + if batch_rows < 1: + raise ValueError("batch_rows must be positive") + snapshot_schema = get_arrow_schema(BOOK_SNAPSHOT_EVENT_SCHEMA_ID) + snapshot_record = next(synthetic_l2_events(2)) + snapshot_record["event_time"] = _TIMESTAMP_VALUE + snapshot_record["received_at"] = _TIMESTAMP_VALUE + snapshot_record["available_at"] = _TIMESTAMP_VALUE + snapshot_record["trading_day"] = _TRADING_DAY_VALUE + yield pa.RecordBatch.from_pylist([snapshot_record], schema=snapshot_schema) + + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + timestamp_type = schema.field("event_time").type + date_type = schema.field("trading_day").type + price_type = schema.field("price").type + quantity_type = schema.field("quantity").type + for start in range(2, rows + 1, batch_rows): + stop = min(start + batch_rows, rows + 1) + length = stop - start + sequence = pa.array(range(start, stop), type=pa.int64()) + previous = pc.subtract(sequence, pa.scalar(1, pa.int64())) + event_id = pc.binary_join_element_wise( + _repeat("m7-delta-", pa.string(), length), + pc.cast(sequence, pa.string()), + "", + ) + price = pa.StructArray.from_arrays( + [ + _repeat(10_000_000, pa.int64(), length), + _repeat(2, pa.int16(), length), + ], + fields=list(price_type), + ) + quantity = pa.StructArray.from_arrays( + [ + pc.add( + pc.bit_wise_and(sequence, pa.scalar(1023, pa.int64())), + pa.scalar(1, pa.int64()), + ), + _repeat(3, pa.int16(), length), + ], + fields=list(quantity_type), + ) + arrays = { + "event_type": _repeat("book_delta", pa.string(), length), + "event_id": event_id, + "instrument_id": _repeat(_INSTRUMENT, pa.string(), length), + "event_time": _repeat(_TIMESTAMP_VALUE, timestamp_type, length), + "received_at": _repeat(_TIMESTAMP_VALUE, timestamp_type, length), + "available_at": _repeat(_TIMESTAMP_VALUE, timestamp_type, length), + "source": _repeat(_PROVIDER, pa.string(), length), + "trading_day": _repeat(_TRADING_DAY_VALUE, date_type, length), + "session_id": _repeat(_SESSION, pa.string(), length), + "sequence": sequence, + "side": _repeat("bid", pa.string(), length), + "action": _repeat("upsert", pa.string(), length), + "price": price, + "quantity": quantity, + "previous_sequence": previous, + } + yield pa.RecordBatch.from_arrays( + [arrays[field.name] for field in schema], + schema=schema, + ) + + +class _PeakRssSampler: + def __init__(self, interval_seconds: float = 0.01) -> None: + self._interval_seconds = interval_seconds + self._process = psutil.Process() + self._stop = threading.Event() + self._thread = threading.Thread(target=self._sample, daemon=True) + self.peak_bytes = self._process.memory_info().rss + + def _sample(self) -> None: + while not self._stop.wait(self._interval_seconds): + self.peak_bytes = max(self.peak_bytes, self._process.memory_info().rss) + + def __enter__(self) -> Self: + self._thread.start() + return self + + def __exit__(self, *_: object) -> None: + self._stop.set() + self._thread.join() + self.peak_bytes = max(self.peak_bytes, self._process.memory_info().rss) + + +@contextmanager +def _profile_storage_stages() -> Iterator[dict[str, dict[str, float | int]]]: + function_names = ( + "_duplicate_event_ids", + "_partition_manifests", + "_claim_database", + "_claim_shard_manifests", + "_export_claim_index", + "_build_claim_index_files", + "_claim_shard_manifests_from_paths", + "_write_claim_index_manifest", + "_assert_lake_wide_claims", + "_publish_or_validate_claim_index", + "load_normalized_snapshot_v3", + "_arrow_ready_rows", + "_logical_rows", + ) + targets = [(normalized_v3, name, name) for name in function_names] + [ + (normalized_v3._InputSpool, "flush", "_InputSpool.flush"), + (normalized_v3._OpenPartition, "flush", "_OpenPartition.flush"), + (normalized_v3._JsonArrayDigest, "update", "_JsonArrayDigest.update"), + ] + originals = { + label: (owner, attribute, getattr(owner, attribute)) for owner, attribute, label in targets + } + timings: dict[str, dict[str, float | int]] = { + label: {"calls": 0, "seconds": 0.0} for label in originals + } + + for label, (owner, attribute, original) in originals.items(): + + @wraps(original) + def measured( + *args: Any, _label: str = label, _original: Any = original, **kwargs: Any + ) -> Any: + started = time.perf_counter() + try: + return _original(*args, **kwargs) + finally: + timing = timings[_label] + timing["calls"] = int(timing["calls"]) + 1 + timing["seconds"] = float(timing["seconds"]) + time.perf_counter() - started + + setattr(owner, attribute, measured) + try: + yield timings + finally: + for owner, attribute, original in originals.values(): + setattr(owner, attribute, original) + + +def _git_identity(repository: Path) -> dict[str, Any]: + def git(*arguments: str) -> str: + completed = subprocess.run( + ["git", *arguments], + cwd=repository, + check=True, + capture_output=True, + text=True, + ) + return completed.stdout.strip() + + return { + "commit": git("rev-parse", "HEAD"), + "branch": git("branch", "--show-current"), + "dirty": bool(git("status", "--porcelain")), + } + + +def _tree_bytes(root: Path) -> int: + return sum(path.stat().st_size for path in root.rglob("*") if path.is_file()) + + +def _disk_roots(work_root: Path, repository: Path) -> tuple[Path, ...]: + candidates = [ + Path(work_root.anchor), + Path(repository.anchor), + Path(tempfile.gettempdir()).resolve(), + *(Path(f"{letter}:\\") for letter in ("C", "H", "F")), + ] + roots: dict[str, Path] = {} + for candidate in candidates: + if not candidate.exists(): + continue + root = Path(candidate.anchor or candidate) + roots[str(root).casefold()] = root + return tuple(roots[key] for key in sorted(roots)) + + +def _disk_usage(roots: tuple[Path, ...]) -> dict[str, dict[str, int]]: + return { + str(root): { + "total_bytes": usage.total, + "used_bytes": usage.used, + "free_bytes": usage.free, + } + for root in roots + for usage in (shutil.disk_usage(root),) + } + + +def _run_once_independent( + work_root: Path, + rows: int, + run_number: int, + batch_rows: int, + policy: StoragePolicy, +) -> dict[str, Any]: + worker_output = work_root / f".worker-result-{run_number:02d}.json" + command = [ + sys.executable, + str(Path(__file__).resolve()), + "--work-root", + str(work_root), + "--output", + str(worker_output), + "--rows", + str(rows), + "--batch-rows", + str(batch_rows), + "--worker-run", + str(run_number), + "--hot-quota-bytes", + str(policy.hot_quota_bytes), + "--minimum-free-bytes", + str(policy.minimum_free_bytes), + "--minimum-free-fraction", + str(policy.minimum_free_fraction), + ] + completed = subprocess.run(command, check=False, capture_output=True, text=True) + if completed.returncode != 0: + raise RuntimeError( + "Independent benchmark worker failed: " + f"run={run_number}, stdout={completed.stdout!r}, stderr={completed.stderr!r}" + ) + result = json.loads(worker_output.read_text(encoding="utf-8")) + worker_output.unlink() + return result + + +def _run_once( + work_root: Path, + rows: int, + run_number: int, + batch_rows: int, + policy: StoragePolicy, +) -> dict[str, Any]: + run_root = work_root / f"run-{run_number:02d}" + run_root.mkdir(parents=True, exist_ok=False) + raw = write_raw_bytes( + run_root, + source=_PROVIDER, + request={"fixture": "m7-synthetic-l2-v1", "rows": rows}, + collected_at=_TIMESTAMP, + payload=b"m7-synthetic-l2-v1", + idempotency_key=f"m7-synthetic-l2-v1-{rows}", + policy=policy, + ) + started = time.perf_counter() + with _profile_storage_stages() as stage_timings, _PeakRssSampler() as memory: + result = write_normalized_batches( + run_root, + synthetic_l2_batches(rows, batch_rows), + provider=_PROVIDER, + venue=_VENUE, + upstream_raw_references=[raw.reference()], + policy=policy, + ) + if result.snapshot is None: + raise RuntimeError("M7 benchmark produced no normalized snapshot") + snapshot = result.snapshot + strict_snapshot = load_normalized_snapshot(run_root, snapshot.snapshot_id) + strict_identity = ( + strict_snapshot.snapshot_id, + strict_snapshot.logical_sha256, + strict_snapshot.rows, + strict_snapshot.partitions, + strict_snapshot.event_claim_index, + strict_snapshot.l2_checkpoints, + ) + expected_identity = ( + snapshot.snapshot_id, + snapshot.logical_sha256, + snapshot.rows, + snapshot.partitions, + snapshot.event_claim_index, + snapshot.l2_checkpoints, + ) + if strict_identity != expected_identity: + raise RuntimeError("Strict normalized snapshot reload changed published identity") + elapsed = time.perf_counter() - started + final_checkpoint = snapshot.l2_checkpoints[0] + manifest_path = run_root / "normalized" / "snapshots" / snapshot.snapshot_id / "manifest.json" + return { + "run": run_number, + "rows": rows, + "accepted_rows": result.accepted_rows, + "quarantined_rows": result.quarantined_rows, + "elapsed_seconds": elapsed, + "events_per_second": rows / elapsed, + "peak_rss_bytes": memory.peak_bytes, + "peak_rss_gib": memory.peak_bytes / _GIB, + "stage_timings": stage_timings, + "snapshot_id": snapshot.snapshot_id, + "snapshot_logical_sha256": snapshot.logical_sha256, + "snapshot_manifest_sha256": hashlib.sha256(manifest_path.read_bytes()).hexdigest(), + "strict_reload_verified": True, + "partition_manifests": [asdict(item) for item in snapshot.partitions], + "claim_index": asdict(snapshot.event_claim_index), + "final_l2_checkpoint": asdict(final_checkpoint), + "retained_bytes": _tree_bytes(run_root), + } + + +def run_benchmark( + work_root: Path, + *, + rows: int, + runs: int, + minimum_events_per_second: float, + maximum_peak_rss_gib: float, + batch_rows: int, + repository: Path, + policy: StoragePolicy | None = None, + independent_processes: bool = False, + cleanup_work_data: bool = False, +) -> dict[str, Any]: + if rows < 2: + raise ValueError("rows must be at least 2") + if runs < 1: + raise ValueError("runs must be positive") + effective_policy = policy or StoragePolicy() + roots = _disk_roots(work_root, repository) + disk_before = _disk_usage(roots) + work_root.mkdir(parents=True, exist_ok=False) + runner = _run_once_independent if independent_processes else _run_once + run_results = [ + runner(work_root, rows, run_number, batch_rows, effective_policy) + for run_number in range(1, runs + 1) + ] + deterministic_fields = ( + "snapshot_id", + "snapshot_logical_sha256", + "snapshot_manifest_sha256", + "partition_manifests", + "claim_index", + "final_l2_checkpoint", + "strict_reload_verified", + ) + deterministic = all( + all(result[field] == run_results[0][field] for field in deterministic_fields) + for result in run_results[1:] + ) + minimum_throughput = min(item["events_per_second"] for item in run_results) + maximum_rss = max(item["peak_rss_gib"] for item in run_results) + accepted = all( + item["accepted_rows"] == rows and item["quarantined_rows"] == 0 for item in run_results + ) + gates = { + "all_rows_accepted": accepted, + "deterministic_artifacts": deterministic, + "minimum_throughput": minimum_throughput >= minimum_events_per_second, + "maximum_peak_rss": maximum_rss <= maximum_peak_rss_gib, + } + generated_bytes = sum(item["retained_bytes"] for item in run_results) + cleanup_performed = False + if cleanup_work_data: + resolved_work_root = work_root.resolve() + if resolved_work_root == Path(resolved_work_root.anchor): + raise RuntimeError("Refusing to clean a volume root") + shutil.rmtree(resolved_work_root) + cleanup_performed = True + report = { + "schema_version": "1.0.0", + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "measurement_scope": ( + "write_normalized_batches end-to-end from generated schema-exact RecordBatch: " + "vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable " + "publish, and verified reload; Raw admission setup excluded" + ), + "input_contract": "Iterable[pyarrow.RecordBatch]", + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "rows_per_run": rows, + "record_batch_rows": batch_rows, + "runs": runs, + "thresholds": { + "minimum_events_per_second": minimum_events_per_second, + "maximum_peak_rss_gib": maximum_peak_rss_gib, + "storage_policy": asdict(effective_policy), + }, + "summary": { + "minimum_events_per_second": minimum_throughput, + "median_events_per_second": statistics.median( + item["events_per_second"] for item in run_results + ), + "maximum_peak_rss_gib": maximum_rss, + "retained_bytes": sum(item["retained_bytes"] for item in run_results), + }, + "gates": gates, + "passed": all(gates.values()), + "environment": { + "python": sys.version, + "platform": platform.platform(), + "logical_cpu_count": os.cpu_count(), + "quant_data_kit": version("quant-data-kit"), + "duckdb": version("duckdb"), + "jsonschema_rs": version("jsonschema-rs"), + "orjson": version("orjson"), + "pyarrow": version("pyarrow"), + "psutil": version("psutil"), + "git": _git_identity(repository), + "temp_environment": { + "TEMP": os.environ.get("TEMP"), + "TMP": os.environ.get("TMP"), + "tempfile_gettempdir": tempfile.gettempdir(), + }, + }, + "execution": { + "independent_processes": independent_processes, + "work_root": str(work_root.resolve()), + "disk_usage_before": disk_before, + "disk_usage_after": _disk_usage(roots), + "data_retention": { + "generated_bytes": generated_bytes, + "cleanup_requested": cleanup_work_data, + "cleanup_performed": cleanup_performed, + "work_root_exists_after": work_root.exists(), + }, + }, + "run_results": run_results, + } + return report + + +def _parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--work-root", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--rows", type=int, default=10_000_000) + parser.add_argument("--runs", type=int, default=3) + parser.add_argument("--batch-rows", type=int, default=262_144) + parser.add_argument("--minimum-events-per-second", type=float, default=100_000.0) + parser.add_argument("--maximum-peak-rss-gib", type=float, default=16.0) + parser.add_argument("--cleanup-work-data", action="store_true") + parser.add_argument("--worker-run", type=int) + parser.add_argument("--hot-quota-bytes", type=int, default=StoragePolicy().hot_quota_bytes) + parser.add_argument( + "--minimum-free-bytes", type=int, default=StoragePolicy().minimum_free_bytes + ) + parser.add_argument( + "--minimum-free-fraction", + type=float, + default=StoragePolicy().minimum_free_fraction, + ) + return parser + + +def main() -> int: + arguments = _parser().parse_args() + repository = Path(__file__).resolve().parents[1] + policy = StoragePolicy( + hot_quota_bytes=arguments.hot_quota_bytes, + minimum_free_bytes=arguments.minimum_free_bytes, + minimum_free_fraction=arguments.minimum_free_fraction, + ) + if arguments.worker_run is not None: + result = _run_once( + arguments.work_root.resolve(), + arguments.rows, + arguments.worker_run, + arguments.batch_rows, + policy, + ) + output = arguments.output.resolve() + output.write_text(json.dumps(result, sort_keys=True), encoding="utf-8") + return 0 + report = run_benchmark( + arguments.work_root.resolve(), + rows=arguments.rows, + runs=arguments.runs, + minimum_events_per_second=arguments.minimum_events_per_second, + maximum_peak_rss_gib=arguments.maximum_peak_rss_gib, + batch_rows=arguments.batch_rows, + repository=repository, + policy=policy, + independent_processes=True, + cleanup_work_data=arguments.cleanup_work_data, + ) + output = arguments.output.resolve() + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n", encoding="utf-8") + print(json.dumps(report["summary"], indent=2, sort_keys=True)) + print(f"passed={report['passed']} report={output}") + return 0 if report["passed"] else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/check_branch_coverage.py b/tools/check_branch_coverage.py index 3e46765..3d0aadf 100644 --- a/tools/check_branch_coverage.py +++ b/tools/check_branch_coverage.py @@ -8,6 +8,7 @@ from typing import Any CORE_THRESHOLDS = { + "src/quant_data_kit/normalized_v3.py": 90, "src/quant_data_kit/data_lake.py": 90, "src/quant_data_kit/curated.py": 90, "src/quant_data_kit/process_lock.py": 90, diff --git a/validation/performance/m7-data-arrow-100k-a.json b/validation/performance/m7-data-arrow-100k-a.json new file mode 100644 index 0000000..8f63d14 --- /dev/null +++ b/validation/performance/m7-data-arrow-100k-a.json @@ -0,0 +1,239 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.009499200001301, + "events_per_second": 49763.64260306014, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 355590144, + "peak_rss_gib": 0.33116912841796875, + "quarantined_rows": 0, + "retained_bytes": 11199127, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.699995770351961e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.240000195452012e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.6652280999987852 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.06431270000030054 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.3296988000001875 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.199999916134402e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.5265685999984271 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.13559990000067046 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.15353659999891534 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.33116912841796875, + "median_events_per_second": 49763.64260306014, + "minimum_events_per_second": 49763.64260306014, + "retained_bytes": 11199127 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-100k-b.json b/validation/performance/m7-data-arrow-100k-b.json new file mode 100644 index 0000000..9b7543f --- /dev/null +++ b/validation/performance/m7-data-arrow-100k-b.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.728154700002051, + "events_per_second": 26822.921269856368, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 303755264, + "peak_rss_gib": 0.2828941345214844, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.0708457000037015 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 3.9000005926936865e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.280000110971741e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.0168978000001516 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.30924469999808935 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 4, + "seconds": 0.3159739000002446 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.008648499999253545 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.16163889999734238 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.014129099999991013 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.1762440999991668 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2828941345214844, + "median_events_per_second": 26822.921269856368, + "minimum_events_per_second": 26822.921269856368, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-100k-c.json b/validation/performance/m7-data-arrow-100k-c.json new file mode 100644 index 0000000..26e0a95 --- /dev/null +++ b/validation/performance/m7-data-arrow-100k-c.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.1.0", + "format": "sorted-parquet-v2", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.6626352000021143, + "events_per_second": 27302.74639416513, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 303697920, + "peak_rss_gib": 0.2828407287597656, + "quarantined_rows": 0, + "retained_bytes": 11226469, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-aebea41b4a7f70dc74ec6657b5bac3c200ffbc342a0f4f2aee27d909adafc124", + "snapshot_logical_sha256": "aebea41b4a7f70dc74ec6657b5bac3c200ffbc342a0f4f2aee27d909adafc124", + "snapshot_manifest_sha256": "898fbce9bab1264abecac3c8f28221ebe5ad1e6e42536728409621eafe98d2c9", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.07321640000009211 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 3.6000019463244826e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.119999984046444e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 0.9440284000011161 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.4886746999982279 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 4, + "seconds": 0.295039500000712 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.008212800003093434 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.19509309999921243 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.007896000002801884 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.20649669999693288 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2828407287597656, + "median_events_per_second": 27302.74639416513, + "minimum_events_per_second": 27302.74639416513, + "retained_bytes": 11226469 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-100k-d.json b/validation/performance/m7-data-arrow-100k-d.json new file mode 100644 index 0000000..4bef818 --- /dev/null +++ b/validation/performance/m7-data-arrow-100k-d.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 100000, + "shards": [ + { + "logical_sha256": "ca3729758321a18aa10a4dfd76e9b84c47217b8ff4618a6d78106e8a815a24d9", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "9f99733c82b0e2233ec652c003f6b6e09783c1f695f0c22d8fd873c965589bb1", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "ef67fceca0a503e57fb10f21ffdccac7f310716278b3727ceb80b0058d148377", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "a782ed11b9375dfa0f41b00aa92888ca59da96bfd83b66b19026f6efe35a6d4c", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "b38ff6775f64e0a2a6ad4254a78e73a17b48899958e21208f739b8719e8c3964", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "317d549f1fc27e3f633ec49f32b0905437738326aad7b21c4f0bea4bad97ae26", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e0d1f6f9f915e49107cef016552b91fa6e62ab39813941e23da67154101089d9", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "20db4b85ce7297b54e38f3a0bc92c8a428874ee360bd5e9bab2347306bdb463c", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "b78d16356c49a8a0dd0f2409d1fd72ec549d3e695d6b721b52b0b42a83a3bd40", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "92f6864ba7c023fd82e8e8a7baa65d44138921cf0116850e9fc2418d0c79feaf", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "5796eae88288e2357becf27dfa9ba7748f45d8ce79b80e364dd7ce2e585e1684", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "24a2d605eafe596326ac0bdfedefac576730545230d38add8e2b7bfce702c5e1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "e0a78dd0b46bdfc0b51782ccee774657965190af8aa1b01c94b8564797f25422", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "77ec2706e80848d7b3dc064939eff7fac999938824e1898460b32413a52b9a31", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "32e1c2ec2fa1672a1c45b390d6e5bec5b873832751887c63a0bafde0b8a4391e", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "98058e272cf79b41a95b247aa24610e466ba732ebf466b2d476e88d083c1d0f6", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.5555067999994208, + "events_per_second": 28125.38566935557, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 301142016, + "peak_rss_gib": 0.2804603576660156, + "quarantined_rows": 0, + "retained_bytes": 11060226, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-6c804f1733179c989fa534a38b8c07bd0cecc211ec605cfef2ed50d77062a6dc", + "snapshot_logical_sha256": "6c804f1733179c989fa534a38b8c07bd0cecc211ec605cfef2ed50d77062a6dc", + "snapshot_manifest_sha256": "40b9fece00975848ec2d19d28b83b66ef1f7681eb3b2ab1ea9f57105a0be3532", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.07457110000177636 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 3.900004230672494e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.70000003487803e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 0.8506331999997201 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.2016373999977077 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 4, + "seconds": 0.3082023000024492 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.029647700001078192 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.1011237999991863 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.007497099999454804 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.11618589999852702 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2804603576660156, + "median_events_per_second": 28125.38566935557, + "minimum_events_per_second": 28125.38566935557, + "retained_bytes": 11060226 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-100k-e.json b/validation/performance/m7-data-arrow-100k-e.json new file mode 100644 index 0000000..3c56192 --- /dev/null +++ b/validation/performance/m7-data-arrow-100k-e.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 100000, + "shards": [ + { + "logical_sha256": "ca3729758321a18aa10a4dfd76e9b84c47217b8ff4618a6d78106e8a815a24d9", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "9f99733c82b0e2233ec652c003f6b6e09783c1f695f0c22d8fd873c965589bb1", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "ef67fceca0a503e57fb10f21ffdccac7f310716278b3727ceb80b0058d148377", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "a782ed11b9375dfa0f41b00aa92888ca59da96bfd83b66b19026f6efe35a6d4c", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "b38ff6775f64e0a2a6ad4254a78e73a17b48899958e21208f739b8719e8c3964", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "317d549f1fc27e3f633ec49f32b0905437738326aad7b21c4f0bea4bad97ae26", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e0d1f6f9f915e49107cef016552b91fa6e62ab39813941e23da67154101089d9", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "20db4b85ce7297b54e38f3a0bc92c8a428874ee360bd5e9bab2347306bdb463c", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "b78d16356c49a8a0dd0f2409d1fd72ec549d3e695d6b721b52b0b42a83a3bd40", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "92f6864ba7c023fd82e8e8a7baa65d44138921cf0116850e9fc2418d0c79feaf", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "5796eae88288e2357becf27dfa9ba7748f45d8ce79b80e364dd7ce2e585e1684", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "24a2d605eafe596326ac0bdfedefac576730545230d38add8e2b7bfce702c5e1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "e0a78dd0b46bdfc0b51782ccee774657965190af8aa1b01c94b8564797f25422", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "77ec2706e80848d7b3dc064939eff7fac999938824e1898460b32413a52b9a31", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "32e1c2ec2fa1672a1c45b390d6e5bec5b873832751887c63a0bafde0b8a4391e", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "98058e272cf79b41a95b247aa24610e466ba732ebf466b2d476e88d083c1d0f6", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 1.2496026999979222, + "events_per_second": 80025.43528448384, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "3e86af866e249e88bd33595f9203dd4ac7fcd448fd40324e0dc440479abcce67", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 255139840, + "peak_rss_gib": 0.23761749267578125, + "quarantined_rows": 0, + "retained_bytes": 11060292, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-1e226d91fb0e8e5befd216788ac8768edd5c5eb93a0b45f56e566ea1cafd19b2", + "snapshot_logical_sha256": "1e226d91fb0e8e5befd216788ac8768edd5c5eb93a0b45f56e566ea1cafd19b2", + "snapshot_manifest_sha256": "99cdcff021f1b6b3dc6972302eb04a190bf10b34601a59e1916acb60d1355862", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.300000000512227e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.629999865661375e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 0.8577961000009964 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.20361699999921257 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.379999831551686e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.029525500001909677 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.11064250000345055 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.00779790000160574 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.12109810000038124 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.23761749267578125, + "median_events_per_second": 80025.43528448384, + "minimum_events_per_second": 80025.43528448384, + "retained_bytes": 11060292 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-10m-final-okx-contract.json b/validation/performance/m7-data-arrow-10m-final-okx-contract.json new file mode 100644 index 0000000..ff49b87 --- /dev/null +++ b/validation/performance/m7-data-arrow-10m-final-okx-contract.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1", + "temp_environment": { + "TEMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract", + "TMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract", + "tempfile_gettempdir": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 6914097152, + "total_bytes": 321320923136, + "used_bytes": 314406825984 + }, + "F:\\": { + "free_bytes": 308037836800, + "total_bytes": 594535321600, + "used_bytes": 286497484800 + }, + "H:\\": { + "free_bytes": 241740365824, + "total_bytes": 998553677824, + "used_bytes": 756813312000 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 6942900224, + "total_bytes": 321320923136, + "used_bytes": 314378022912 + }, + "F:\\": { + "free_bytes": 308037836800, + "total_bytes": 594535321600, + "used_bytes": 286497484800 + }, + "H:\\": { + "free_bytes": 245054144512, + "total_bytes": 998553677824, + "used_bytes": 753499533312 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\quant-data-kit-10m-final-okx-contract" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 56.78307909999785, + "events_per_second": 176108.80139820348, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3161690112, + "peak_rss_gib": 2.9445533752441406, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 5.800004146294668e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.749999738531187e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 16.750588699997024 + }, + "_claim_database": { + "calls": 1, + "seconds": 24.089754900000116 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.1966786999983015 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.7652362000007997 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.799999755457975e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.7077691000013147 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.5886443999988842 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6604442000025301 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 30.2918374999972 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 57.27277210000102, + "events_per_second": 174603.03794165084, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3168739328, + "peak_rss_gib": 2.9511184692382812, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 5.100002454128116e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 0.0001652000028116163 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 17.43220999999903 + }, + "_claim_database": { + "calls": 1, + "seconds": 23.639003899999807 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.238394399999379 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.907032800005254 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.360000043059699e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.553248700001859 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.6587462999996205 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6860811000005924 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 30.054873699999007 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 57.483620099999825, + "events_per_second": 173962.59982589423, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3171721216, + "peak_rss_gib": 2.9538955688476562, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 5.000001692678779e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.489999941550195e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 16.952792100000806 + }, + "_claim_database": { + "calls": 1, + "seconds": 24.3877121000005 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0477202000001853 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 4.0621948999978486 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.450000000768341e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4980174000011175 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.7949523999996018 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.7279170999972848 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 30.71097500000178 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 2.9538955688476562, + "median_events_per_second": 174603.03794165084, + "minimum_events_per_second": 173962.59982589423, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-10m-final.json b/validation/performance/m7-data-arrow-10m-final.json new file mode 100644 index 0000000..5db940b --- /dev/null +++ b/validation/performance/m7-data-arrow-10m-final.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1", + "temp_environment": { + "TEMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final", + "TMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final", + "tempfile_gettempdir": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 6952452096, + "total_bytes": 321320923136, + "used_bytes": 314368471040 + }, + "F:\\": { + "free_bytes": 308038017024, + "total_bytes": 594535321600, + "used_bytes": 286497304576 + }, + "H:\\": { + "free_bytes": 245056933888, + "total_bytes": 998553677824, + "used_bytes": 753496743936 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 6956498944, + "total_bytes": 321320923136, + "used_bytes": 314364424192 + }, + "F:\\": { + "free_bytes": 308038017024, + "total_bytes": 594535321600, + "used_bytes": 286497304576 + }, + "H:\\": { + "free_bytes": 248367849472, + "total_bytes": 998553677824, + "used_bytes": 750185828352 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\quant-data-kit-10m-final" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 50.58911070000249, + "events_per_second": 197670.99799996102, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3174617088, + "peak_rss_gib": 2.956592559814453, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.899997293250635e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.039999738684855e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.193730099999812 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.55003729999953 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.2349790000007488 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3678174999986368 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.040000153006986e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4203058999992209 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4705613000005542 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6542536999986623 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.542721300000267 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 50.21272039999894, + "events_per_second": 199152.72306178836, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3169054720, + "peak_rss_gib": 2.9514122009277344, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 7.000002369750291e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.919999891077168e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 13.665031100001215 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.68741299999965 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.1149853999995685 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3394536999949196 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.24999993306119e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4254765000005136 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.448686200001248 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6679547999992792 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.679481600000145 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 50.566317400000116, + "events_per_second": 197760.10028367178, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3155230720, + "peak_rss_gib": 2.93853759765625, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.800000169780105e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.919999916339293e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.09390859999985 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.725668300001416 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.079024999999092 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.451286600000458 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.379999831551686e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.423522499997489 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4833339999968302 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6592168000024685 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.581572699997196 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 2.956592559814453, + "median_events_per_second": 197760.10028367178, + "minimum_events_per_second": 197670.99799996102, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-1m-a.json b/validation/performance/m7-data-arrow-1m-a.json new file mode 100644 index 0000000..97ab145 --- /dev/null +++ b/validation/performance/m7-data-arrow-1m-a.json @@ -0,0 +1,239 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 262144, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "933017c0adce7a8d0c5910860b3a7ee0fb6c62acc3746f692d4831540e51bb59", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "abd59a3970903898f112c6d3599e39b0bd8b4f48304323d35ed847311a35f8dd", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "67b1cc806e16400ad8a6993b09cbf2a5fb75f115f0963d480d47bba11c8f4c85", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "62e772b3914687a26acae18e8b57afc2bfce2d3ce3d5ff956293c8cdbf74eab2", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "624f6203a75cbcb9cfbce0f2f8e5a65e827734e79e8cbbf73772928f7ab13a38", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "d0a321bc96c7a41c7670db52e87877f2fa9dcb4482a22fcdcc8234a0fd19d5b7", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "5dc6de5e58a2e8cdeeb32608efa2acae0dcfc17e849f0e5f1b56f878f19a916d", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "bc0105650c4315c3141b14c3a664bb836a7218257d816e39b14db41e0e03cd42", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "fa5bf3e9584821e575d3182458119d0baef343373d3aba4b1064230429a8faff", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "2ef02c4d3872b2ade0a952248d6c4846ef2d90e9a5a5c027bb56a9a00a20807e", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "7d0f84b8826ca0a1c51d13285f5dd9788e9cde4d24bece756df6844bba2abc50", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "981f63a53b124d233daa0b3be4bdbf2ba9e595ab6eef5b0286e20bf8a229f153", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "ae86bd9563372f97a535262cdaf314a270a2766e2f45a0a3e0999d480c31b2ff", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "8cb74ffa96f96852560e98cc63b826bca9d9b3ac4de790e8355b147a2eca42ef", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "bd72f9bab4cffeb56754438285069fdf2e0cd39c432c1cfa2752e5b206e8d1a7", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "378ff237c833fe7af8e75c0d19a23932b6825c8f9dcf62fa4027101bc1c3bed1", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 11.896203799999057, + "events_per_second": 84060.42942876276, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "365643bd96302dccdd32c33a9413e53d0e28a2b909e638d36212a09cd0fd0eb1", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 2025938944, + "peak_rss_gib": 1.8868026733398438, + "quarantined_rows": 0, + "retained_bytes": 112355011, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_logical_sha256": "acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_manifest_sha256": "d30e299250afe543b8161864aa43ba96060ffe8c7096455781e45450be555fe8", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 6.100002792663872e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.84000006003771e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 2.5672856000019237 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.6235296000013477 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 2.0172932999994373 + }, + "_logical_rows": { + "calls": 1, + "seconds": 0.00010889999975915998 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 5.17764299999908 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.38809300000139046 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.4252873000004911 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 1.8868026733398438, + "median_events_per_second": 84060.42942876276, + "minimum_events_per_second": 84060.42942876276, + "retained_bytes": 112355011 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-1m-c.json b/validation/performance/m7-data-arrow-1m-c.json new file mode 100644 index 0000000..26fc309 --- /dev/null +++ b/validation/performance/m7-data-arrow-1m-c.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": false + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": false, + "record_batch_rows": 65536, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "sorted-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "933017c0adce7a8d0c5910860b3a7ee0fb6c62acc3746f692d4831540e51bb59", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "abd59a3970903898f112c6d3599e39b0bd8b4f48304323d35ed847311a35f8dd", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "67b1cc806e16400ad8a6993b09cbf2a5fb75f115f0963d480d47bba11c8f4c85", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "62e772b3914687a26acae18e8b57afc2bfce2d3ce3d5ff956293c8cdbf74eab2", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "624f6203a75cbcb9cfbce0f2f8e5a65e827734e79e8cbbf73772928f7ab13a38", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "d0a321bc96c7a41c7670db52e87877f2fa9dcb4482a22fcdcc8234a0fd19d5b7", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "5dc6de5e58a2e8cdeeb32608efa2acae0dcfc17e849f0e5f1b56f878f19a916d", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "bc0105650c4315c3141b14c3a664bb836a7218257d816e39b14db41e0e03cd42", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "fa5bf3e9584821e575d3182458119d0baef343373d3aba4b1064230429a8faff", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "2ef02c4d3872b2ade0a952248d6c4846ef2d90e9a5a5c027bb56a9a00a20807e", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "7d0f84b8826ca0a1c51d13285f5dd9788e9cde4d24bece756df6844bba2abc50", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "981f63a53b124d233daa0b3be4bdbf2ba9e595ab6eef5b0286e20bf8a229f153", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "ae86bd9563372f97a535262cdaf314a270a2766e2f45a0a3e0999d480c31b2ff", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "8cb74ffa96f96852560e98cc63b826bca9d9b3ac4de790e8355b147a2eca42ef", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "bd72f9bab4cffeb56754438285069fdf2e0cd39c432c1cfa2752e5b206e8d1a7", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "378ff237c833fe7af8e75c0d19a23932b6825c8f9dcf62fa4027101bc1c3bed1", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 35.09364100000312, + "events_per_second": 28495.19090937048, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "365643bd96302dccdd32c33a9413e53d0e28a2b909e638d36212a09cd0fd0eb1", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 599846912, + "peak_rss_gib": 0.5586509704589844, + "quarantined_rows": 0, + "retained_bytes": 112662043, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-0b2c7f69d5c181aa9e5c4c7133909ad22249596f1a2ce76e28dbebef9cad80ce", + "snapshot_logical_sha256": "0b2c7f69d5c181aa9e5c4c7133909ad22249596f1a2ce76e28dbebef9cad80ce", + "snapshot_manifest_sha256": "292546d5d5d380aa8d057cb5b26bb5264d7c965fb7f3ed3a7b29d7fcb32299a4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 17, + "seconds": 0.7390057999982673 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 3.6999954318162054e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.779999966965988e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 9.168475900001795 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 4.759947000002285 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 18, + "seconds": 2.7706744000061008 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.009955999998055631 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.69021900000007 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06631310000011581 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 1.6759004999985336 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.5586509704589844, + "median_events_per_second": 28495.19090937048, + "minimum_events_per_second": 28495.19090937048, + "retained_bytes": 112662043 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-1m-d.json b/validation/performance/m7-data-arrow-1m-d.json new file mode 100644 index 0000000..06c943d --- /dev/null +++ b/validation/performance/m7-data-arrow-1m-d.json @@ -0,0 +1,251 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 9.601437900000747, + "events_per_second": 104151.06678968598, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 437264384, + "peak_rss_gib": 0.40723419189453125, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.699995770351961e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.890000076964498e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 8.252705499999138 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.3919780000032915 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.860000212327577e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.15613739999753307 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.22966570000062347 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.07239759999720263 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.24847779999981867 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.40723419189453125, + "median_events_per_second": 104151.06678968598, + "minimum_events_per_second": 104151.06678968598, + "retained_bytes": 110429679 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-1m-e.json b/validation/performance/m7-data-arrow-1m-e.json new file mode 100644 index 0000000..f7cd9db --- /dev/null +++ b/validation/performance/m7-data-arrow-1m-e.json @@ -0,0 +1,451 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.851910000001226, + "events_per_second": 350642.2011913315, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 798380032, + "peak_rss_gib": 0.7435493469238281, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.900000931229442e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.480000178678893e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.6313678000005893 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.3332501000004413 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.239999856916256e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.15494619999662973 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.18881239999973332 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06803880000006757 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.20739210000101593 + } + } + }, + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.824726199996803, + "events_per_second": 354016.6123007362, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 844845056, + "peak_rss_gib": 0.7868232727050781, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 2, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 3.9000005926936865e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.84000006003771e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.598442900001828 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.33649160000277334 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 2.3100001271814108e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.14684259999921778 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.20699679999961518 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06534990000000107 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.2139588999998523 + } + } + } + ], + "runs": 2, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.7868232727050781, + "median_events_per_second": 352329.4067460338, + "minimum_events_per_second": 350642.2011913315, + "retained_bytes": 220859358 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-arrow-1m-independent.json b/validation/performance/m7-data-arrow-1m-independent.json new file mode 100644 index 0000000..7bcd386 --- /dev/null +++ b/validation/performance/m7-data-arrow-1m-independent.json @@ -0,0 +1,700 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1", + "temp_environment": { + "TEMP": "F:\\PureSaber-M7\\temp", + "TMP": "F:\\PureSaber-M7\\temp", + "tempfile_gettempdir": "F:\\PureSaber-M7\\temp" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": true, + "cleanup_requested": true, + "generated_bytes": 331289037, + "work_root_exists_after": false + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 7011991552, + "total_bytes": 321320923136, + "used_bytes": 314308931584 + }, + "F:\\": { + "free_bytes": 313046343680, + "total_bytes": 594535321600, + "used_bytes": 281488977920 + }, + "H:\\": { + "free_bytes": 249132961792, + "total_bytes": 998553677824, + "used_bytes": 749420716032 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 7012106240, + "total_bytes": 321320923136, + "used_bytes": 314308816896 + }, + "F:\\": { + "free_bytes": 313046343680, + "total_bytes": 594535321600, + "used_bytes": 281488977920 + }, + "H:\\": { + "free_bytes": 249132969984, + "total_bytes": 998553677824, + "used_bytes": 749420707840 + } + }, + "independent_processes": true, + "work_root": "F:\\PureSaber-M7\\quant-data-kit-pilot-1m" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.60956360000273, + "events_per_second": 383205.8356420031, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 803799040, + "peak_rss_gib": 0.74859619140625, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.699999408330768e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 2.640000093379058e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.4616376999983913 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.3072580000007292 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.159999975352548e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.15668139999979758 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.1733139999996638 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06670909999957075 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.18423499999698834 + } + } + }, + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.623741400002473, + "events_per_second": 381135.12253877515, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 795525120, + "peak_rss_gib": 0.7408905029296875, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 2, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.7000030463095754e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 2.4900000425986946e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.4636381000018446 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.3060968999998295 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 5.820000296807848e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.1575827999986359 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.174995499997749 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06648829999903683 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.1848853000010422 + } + } + }, + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "4ce620b74968ce8d3d372794ccf4fc47ec16ef1ee50914a3847d0cfe6b4807c1", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "5423e1243330434328f97c357e4a5abfb1136bd84f7b83f1f9ae44a54fc80f8f", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "492096d6b0f0813c163ad915b52b04c395dd0bde74c429f7cc2c7eec98b878b3", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "057f67de1d697f5fe2c4af30f529718f749160a7f9e10790cec8b8e16adb50f0", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "3cfa4aae73e816d440c04b0487e8b812e5777a6ce9b3ef451b8a8363c7efb216", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "7161d3bb577a6da239d61c78385cda432e0c08486ac51ca65fafa4f66e0c6355", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "4534d9b882233f7035584d85235d1530b8bcafbcb08a5ba6ccbd291225a0532e", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "2b9943f3a706d18281a17b5bad455f78d0eacebb57559c07389175c4ef32d7b2", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "e26557c18ab69b09ada885bf6a840b6f14110f2c6ceb208570e457a9476fa738", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "f3a1510c95c5aa45d9cc9ae5ae6330c7338552b0a3581353c53780f55eb2e31c", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "fc4fc7158c6dace8d8fd7eddf5c115c4f21487756cf96b4ea0171745f2b38dcd", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "5bc41ba0e1bc378e962f018a6f376f7b73f70ab4d87638112194727985d855f6", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "fd7b02a05838f46b7057d229d37f091c262e8edbf1edc43e9dbaeb1fec935683", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "eb16a564915d8a023ac5db006814473f1b29698cf7c4dc22b44e5f8a85035e0b", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "0453826891c28b6eb36704b55ff5509c459e71c13a5faed92ebb0e5fef109c3c", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "db1fa71f10088904cf0ce271283961c0300746d523a0ce221e3fdb48a9f47a40", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.648837699998694, + "events_per_second": 377524.0740497211, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "9df3a1bbf1259da61a5da923c4cf4428d24437fca0eb8a73f6bfeda979dee7bd", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 813072384, + "peak_rss_gib": 0.757232666015625, + "quarantined_rows": 0, + "retained_bytes": 110429679, + "rows": 1000000, + "run": 3, + "snapshot_id": "sha256-3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_logical_sha256": "3a231406d48d4aa31793089e5340d062e7f6ae7e6969ff6b877323b210e38126", + "snapshot_manifest_sha256": "211ff31500ddb4b693fecd262d2ac8cdf7850870ee28382aa81e2ed37d9bdfe7", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.599998646881431e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 2.7999998565064743e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 1.495889800000441 + }, + "_claim_database": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests": { + "calls": 0, + "seconds": 0.0 + }, + "_claim_shard_manifests_from_paths": { + "calls": 3, + "seconds": 0.31436570000005304 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 5.8400000852998346e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.15562629999840283 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.17549080000026152 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.06547439999849303 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.18523499999719206 + } + } + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.757232666015625, + "median_events_per_second": 381135.12253877515, + "minimum_events_per_second": 377524.0740497211, + "retained_bytes": 331289037 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-b.json b/validation/performance/m7-data-calibration-100k-b.json new file mode 100644 index 0000000..359d4f5 --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-b.json @@ -0,0 +1,183 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 9.362931199997547, + "events_per_second": 10680.415979135487, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 406421504, + "peak_rss_gib": 0.378509521484375, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82" + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.378509521484375, + "median_events_per_second": 10680.415979135487, + "minimum_events_per_second": 10680.415979135487, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-c.json b/validation/performance/m7-data-calibration-100k-c.json new file mode 100644 index 0000000..fa16997 --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-c.json @@ -0,0 +1,217 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 9.370877199999086, + "events_per_second": 10671.359560662022, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 402583552, + "peak_rss_gib": 0.3749351501464844, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.0900001699337736e-05 + }, + "_claim_database": { + "calls": 2, + "seconds": 1.2306236000003992 + }, + "_claim_shard_manifests": { + "calls": 2, + "seconds": 0.1353080000008049 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.023697199998423457 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.3586862000011024 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 3.010801899999933 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.11903570000140462 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 3.8920904000005976 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.3749351501464844, + "median_events_per_second": 10671.359560662022, + "minimum_events_per_second": 10671.359560662022, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-d.json b/validation/performance/m7-data-calibration-100k-d.json new file mode 100644 index 0000000..aca3083 --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-d.json @@ -0,0 +1,217 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 4.24190820000149, + "events_per_second": 23574.29611512217, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 355954688, + "peak_rss_gib": 0.3315086364746094, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.230000144569203e-05 + }, + "_claim_database": { + "calls": 2, + "seconds": 1.281964900001185 + }, + "_claim_shard_manifests": { + "calls": 2, + "seconds": 0.1269190000020899 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.023893800000223564 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.36989620000167633 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.43547899999975925 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.11476850000326522 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 1.2983270999975502 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.3315086364746094, + "median_events_per_second": 23574.29611512217, + "minimum_events_per_second": 23574.29611512217, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-e.json b/validation/performance/m7-data-calibration-100k-e.json new file mode 100644 index 0000000..0a26aba --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-e.json @@ -0,0 +1,217 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.0774177000021155, + "events_per_second": 32494.77638343708, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 313344000, + "peak_rss_gib": 0.2918243408203125, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.379999781027436e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.61575879999873 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.06040170000051148 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.023612699998921016 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.3670691999977862 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.0021868000003451016 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.11391050000020186 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.13528100000257837 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2918243408203125, + "median_events_per_second": 32494.77638343708, + "minimum_events_per_second": 32494.77638343708, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-f.json b/validation/performance/m7-data-calibration-100k-f.json new file mode 100644 index 0000000..5ed4172 --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-f.json @@ -0,0 +1,225 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.084576500001276, + "events_per_second": 32419.36129642388, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 314142720, + "peak_rss_gib": 0.2925682067871094, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 2, + "seconds": 0.05628919999799109 + }, + "_OpenPartition.flush": { + "calls": 5, + "seconds": 0.8745466000036686 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.230000144569203e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.6116398999984085 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.06507130000318284 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.024503399999957765 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.3566467999989982 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.001974299997527851 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.11805499999900348 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.1328270000012708 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2925682067871094, + "median_events_per_second": 32419.36129642388, + "minimum_events_per_second": 32419.36129642388, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-g.json b/validation/performance/m7-data-calibration-100k-g.json new file mode 100644 index 0000000..12ce22c --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-g.json @@ -0,0 +1,237 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 3.127840600001946, + "events_per_second": 31970.938672494303, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 313757696, + "peak_rss_gib": 0.2922096252441406, + "quarantined_rows": 0, + "retained_bytes": 11197794, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 2, + "seconds": 0.055922700001246994 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.07319070000085048 + }, + "_OpenPartition.flush": { + "calls": 5, + "seconds": 0.8819529000029434 + }, + "_arrow_ready_rows": { + "calls": 3, + "seconds": 0.10537480000130017 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 9.379999755765311e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.6304711999982828 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.06915700000172365 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.02587380000113626 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.3628110000026936 + }, + "_logical_rows": { + "calls": 3, + "seconds": 0.4547467999982473 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.0019474000000627711 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.1177334999993036 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.12974659999963478 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2922096252441406, + "median_events_per_second": 31970.938672494303, + "minimum_events_per_second": 31970.938672494303, + "retained_bytes": 11197794 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k-h.json b/validation/performance/m7-data-calibration-100k-h.json new file mode 100644 index 0000000..5bbf68f --- /dev/null +++ b/validation/performance/m7-data-calibration-100k-h.json @@ -0,0 +1,425 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.706692600000679, + "events_per_second": 36945.45882305768, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 296202240, + "peak_rss_gib": 0.2758598327636719, + "quarantined_rows": 0, + "retained_bytes": 11199127, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 2, + "seconds": 0.05704830000104266 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.07023569999728352 + }, + "_OpenPartition.flush": { + "calls": 5, + "seconds": 0.522630500003288 + }, + "_arrow_ready_rows": { + "calls": 3, + "seconds": 0.10517480000271462 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.430000212276354e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.5962691999993694 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.062299900000653 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.026889199998549884 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.32628140000088024 + }, + "_logical_rows": { + "calls": 3, + "seconds": 0.11084380000102101 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.002063399999315152 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.12263589999929536 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.14100950000283774 + } + } + }, + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "8e35712fc23ab6703b93fbd79230818e8083d156a65c7e96a038a81727e8fe8b", + "rows": 6353, + "shard": "0" + }, + { + "logical_sha256": "7c505ae71b1e2b8f8982260d413abab7042bf9771d5746be5693f97105095d67", + "rows": 6224, + "shard": "1" + }, + { + "logical_sha256": "4731cf0347ad6378fbfcbbd568c25dea02c03393f2a379878d86415695f30025", + "rows": 6021, + "shard": "2" + }, + { + "logical_sha256": "c39ea184b380de6503fbad53a50e9452dddee3cac486af8c9e17529778fc9d3f", + "rows": 6372, + "shard": "3" + }, + { + "logical_sha256": "996883f790fd4b2636620621036f16b12ed45344312c378e9c83bcc318e51308", + "rows": 6312, + "shard": "4" + }, + { + "logical_sha256": "69e36d5fe3b356c3554dd60076368764662a0ecf6e025812c900145998cbb05c", + "rows": 6247, + "shard": "5" + }, + { + "logical_sha256": "e2f95f148fa0b3856921b4cd08bc7a079936b3fd26c228ab7d8d1c0a088dee8a", + "rows": 6276, + "shard": "6" + }, + { + "logical_sha256": "acdb3949cac431e38df90bc2b81b0b4d1a6ca409fda31273e76895456d5fbd40", + "rows": 6306, + "shard": "7" + }, + { + "logical_sha256": "5f8ab99d15014db152661949cb86e4f399f530d99f565dc9957e156b6e4138b5", + "rows": 6148, + "shard": "8" + }, + { + "logical_sha256": "89b95655e6af0c610a0592caff0cdc5bd1f4ffe6a05fc5e149e9146f7ca395e4", + "rows": 6270, + "shard": "9" + }, + { + "logical_sha256": "8e28e8811743d76697986f9012b27387faffd8d803e3f8b57100d16ddcff3516", + "rows": 6315, + "shard": "a" + }, + { + "logical_sha256": "5e810d927f8c1998c1d0ec4741bf3418eac6ccea63b20dadfc7b204c2d1c9fe1", + "rows": 6303, + "shard": "b" + }, + { + "logical_sha256": "40d14d7154da870bbb295fce6af59f78d104ad594ee31557e9f43ab0e6717ffe", + "rows": 6204, + "shard": "c" + }, + { + "logical_sha256": "9acc03da31933833a497fb1a0d2a8db0a0a326f1c294d8e6c7d3cf216196018f", + "rows": 6175, + "shard": "d" + }, + { + "logical_sha256": "e65f81878eb4c098993e15ce9bd486d702111c1e1a2e08c2552e76b803d65427", + "rows": 6260, + "shard": "e" + }, + { + "logical_sha256": "cfd1ba542958c264e2bc760c54052fd441e447ce0a86f54ea835961f1485fb01", + "rows": 6214, + "shard": "f" + } + ] + }, + "elapsed_seconds": 2.6839402000005066, + "events_per_second": 37258.65427254345, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 349282304, + "peak_rss_gib": 0.32529449462890625, + "quarantined_rows": 0, + "retained_bytes": 11199127, + "rows": 100000, + "run": 2, + "snapshot_id": "sha256-3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_logical_sha256": "3c1032fe2848457d9da2c6e0810bcaf42f0c3e3a8c92460583b57aa5a8142c1d", + "snapshot_manifest_sha256": "89cf4601bdeef90d4a286202e55c8d5327e26662b9bc1ba0a905391455c79f82", + "stage_timings": { + "_InputSpool.flush": { + "calls": 2, + "seconds": 0.059157399999094196 + }, + "_JsonArrayDigest.update": { + "calls": 3, + "seconds": 0.06905000000188011 + }, + "_OpenPartition.flush": { + "calls": 5, + "seconds": 0.5776849000067159 + }, + "_arrow_ready_rows": { + "calls": 3, + "seconds": 0.10890469999867491 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.030000026337802e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 0.619008900001063 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.06194400000094902 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.02442430000155582 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 0.31634850000045844 + }, + "_logical_rows": { + "calls": 3, + "seconds": 0.15590779999547522 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.0018266000006406102 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.10732939999797964 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.12484149999727379 + } + } + } + ], + "runs": 2, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.32529449462890625, + "median_events_per_second": 37102.05654780056, + "minimum_events_per_second": 36945.45882305768, + "retained_bytes": 22398254 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-100k.json b/validation/performance/m7-data-calibration-100k.json new file mode 100644 index 0000000..9e6c140 --- /dev/null +++ b/validation/performance/m7-data-calibration-100k.json @@ -0,0 +1,1383 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 100000, + "run_results": [ + { + "accepted_rows": 100000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 100000, + "shards": [ + { + "logical_sha256": "86dcf9f5bef0b85ae74edeae8c69e16c571eee0c8e4e9069a390468b296b8822", + "rows": 367, + "shard": "00" + }, + { + "logical_sha256": "05d8bf2fcc633f00c73d31b3e28e6545e8f716fb7df16a9dddbaf1a253437d64", + "rows": 401, + "shard": "01" + }, + { + "logical_sha256": "6508db4d68b154ed8d62cad9be29ffbc2cebe85bcc6b250c2f1fe70d3a8fd468", + "rows": 424, + "shard": "02" + }, + { + "logical_sha256": "1bd53537056ff73df3365c693210d9c058092f3c831b6a9d247009b83ea8ffcc", + "rows": 417, + "shard": "03" + }, + { + "logical_sha256": "d8e5f6722b9b13252760e1b2bdfc840d738eb08f80456b22fff5f719381ed197", + "rows": 380, + "shard": "04" + }, + { + "logical_sha256": "e2b128f6459f2b90d967373b9728a06f3fd6af091abb3ef0c6d9df2fec5083fb", + "rows": 398, + "shard": "05" + }, + { + "logical_sha256": "0a1ffa3b6161864623a3d2aa52b136509cb2c30aa1a8fb8cf8a9bb4cd760fc84", + "rows": 411, + "shard": "06" + }, + { + "logical_sha256": "991db0363a10fda8dcab2e082d162c525f47cc5f3a3b57b1bf637f7dc6a67f90", + "rows": 396, + "shard": "07" + }, + { + "logical_sha256": "ec80e58268ca3014a82ff143f947fbd68ed70f0b9e892a039ccf9be51660ccf7", + "rows": 391, + "shard": "08" + }, + { + "logical_sha256": "3bd4f10b5c98bcc41290b0b689af30915e2521009e7bc2ff4d481805574e9058", + "rows": 379, + "shard": "09" + }, + { + "logical_sha256": "188a5c60eba674cad9e1f2dc87f0e0a01e16fb0c575da36f2aba1760a504ce83", + "rows": 394, + "shard": "0a" + }, + { + "logical_sha256": "c98805688a2d1ad8dc75de2edec427b0b11cab104d2de74cf5c0bec7bcdb9ed2", + "rows": 410, + "shard": "0b" + }, + { + "logical_sha256": "38f984577a3e707356a5d9d267944b794f8fdf087d4e5211b72aa543d87566dc", + "rows": 429, + "shard": "0c" + }, + { + "logical_sha256": "7537ff9b5c954d4c68baabd61a7c1a46266520b93684bae5f40f3f2a77ea069b", + "rows": 360, + "shard": "0d" + }, + { + "logical_sha256": "1c1f0047e3911203a97d89bb72e317febed9430dafcd1e621d5967f060b116c5", + "rows": 411, + "shard": "0e" + }, + { + "logical_sha256": "028573e2e31b97047deb1c37f9b39d92e00bf38f7c89eee5e81a1ff670188468", + "rows": 385, + "shard": "0f" + }, + { + "logical_sha256": "8074e33695a045a18de964a7b385a515c0dbf40aa6678563316b3ad37e055c37", + "rows": 389, + "shard": "10" + }, + { + "logical_sha256": "1c26696f0faa39bcbb2ff067376082e07914698a0af401f8eeb34775115adbf3", + "rows": 402, + "shard": "11" + }, + { + "logical_sha256": "df7df8a73ddd016564d970722bb4759e59e014602494dbf2bf86ae1447b6cf8e", + "rows": 401, + "shard": "12" + }, + { + "logical_sha256": "619cfaa298bc510aecd792ee74164a22a0f64ba8046899b58c8c31ccaa034367", + "rows": 396, + "shard": "13" + }, + { + "logical_sha256": "6719f0fb1404bdc1520d61e1a0214dfec212f808d6ad592916a24384ff9f7865", + "rows": 410, + "shard": "14" + }, + { + "logical_sha256": "7761f3933357e864575a8e42bd8150dd7f3195fd2cd3785c4011920ad89d9f0b", + "rows": 372, + "shard": "15" + }, + { + "logical_sha256": "b1da26af8df10ee5992b940337ee9fdf78da169f59ffc9de88f4d8e28d9907eb", + "rows": 408, + "shard": "16" + }, + { + "logical_sha256": "d2eb9534cf869e74be0d996d7bd0fef9868056dd4c6280ad7c9bb8060220896e", + "rows": 389, + "shard": "17" + }, + { + "logical_sha256": "5237fffc38895bb23739fd91784d47ed4ecf658e23a52a9d4d83591a5e3aa58c", + "rows": 399, + "shard": "18" + }, + { + "logical_sha256": "cccfc159547b6e2331403233535c2d83f33a89d4d5feaba96e7d822bca3ac6a3", + "rows": 368, + "shard": "19" + }, + { + "logical_sha256": "1b1138eeed95e44d3cee96d5bf4c3558830d9cd6d7568a0aaf5174dcd2020222", + "rows": 370, + "shard": "1a" + }, + { + "logical_sha256": "6d66980db94e9a78aaa43ed77be090d69d4c6b95a7c0e859d4a2a6fc39ae2bdd", + "rows": 391, + "shard": "1b" + }, + { + "logical_sha256": "6cf3b25bbb1bbb4b1c772e2e778813a36b5adfb0e212bc0ee1af265eb018ca22", + "rows": 397, + "shard": "1c" + }, + { + "logical_sha256": "91e26e841054ab72854134a1e417bc77675d30ee9e2bbb22cec4ddc47819ca6a", + "rows": 382, + "shard": "1d" + }, + { + "logical_sha256": "178dd246593e6bf5c2be41dc86c8cf33f50c2508612d90ad315d6eb4fa584c7f", + "rows": 368, + "shard": "1e" + }, + { + "logical_sha256": "c9c8d10ed1970c4268daa72cb435c799eb9312015f8bcf397cfc3b4978954936", + "rows": 382, + "shard": "1f" + }, + { + "logical_sha256": "45bd4e6fe2fd5a0b31c732347d6653ab2602cfa2d54f72a065def9fcd7c62b2c", + "rows": 368, + "shard": "20" + }, + { + "logical_sha256": "7829715ec9e344444af4117737d795d710b9ad0ec99bd2623698f00d137bc5c7", + "rows": 368, + "shard": "21" + }, + { + "logical_sha256": "19f7cd5297d34b22ff0f6657d3ad77de41f5fb8ec83b0f277d394a547f11ea38", + "rows": 361, + "shard": "22" + }, + { + "logical_sha256": "983b032f38f7a213ecc746e0c679850f7a9d7729ac6b7e03ae3c684449a2d5eb", + "rows": 384, + "shard": "23" + }, + { + "logical_sha256": "5ca24515a6183b7e6ef9a6d590ed16660edc3e1ca47f65a25aaa1dcbb4b5bd54", + "rows": 362, + "shard": "24" + }, + { + "logical_sha256": "6fcba8518bf2da1f991bd6a3294443dc54aed1c27c7c89c76473c9869f383c98", + "rows": 385, + "shard": "25" + }, + { + "logical_sha256": "5309aaef05679a126f58886aad5814675180f2fe0a4069d5856752add128d019", + "rows": 410, + "shard": "26" + }, + { + "logical_sha256": "936d89ae8b9556d641319cdc61bc8a11d0ba00f2060778c0556f5b5784f3fb5a", + "rows": 376, + "shard": "27" + }, + { + "logical_sha256": "064ddf7758f3cc6e261383a70227f62da947f2d545f32387c9eae5696f21b0dd", + "rows": 376, + "shard": "28" + }, + { + "logical_sha256": "fd02db94a9aa45a3de1679b8136b23687a34c89321c3a28400ffba1dd5dabec4", + "rows": 370, + "shard": "29" + }, + { + "logical_sha256": "d7c275f80fcf69144b58269c98ef52b8294cac71917d042cf5aaf9bb732b051c", + "rows": 392, + "shard": "2a" + }, + { + "logical_sha256": "41d8caea3072e527847bf0d448adbcc80ac469ae425c5495e9b5dc9ab3049e8b", + "rows": 353, + "shard": "2b" + }, + { + "logical_sha256": "46122b3bc72cef875b085a7ea76b4c55f7e5ce49760909d9b40f3289b8c1a6a0", + "rows": 379, + "shard": "2c" + }, + { + "logical_sha256": "4789f6a6631e2ef23b8dd8654307c1a2a338ff5829a2795bda4409d8670909ca", + "rows": 413, + "shard": "2d" + }, + { + "logical_sha256": "899dd800640ac662bde2ba8f13f910b65d3c271e4383456d85c2e4c26158aee2", + "rows": 347, + "shard": "2e" + }, + { + "logical_sha256": "cc254fda7c01b1d6aff7b33674703567e0efa8759c5a25251ae04dd9d23d192e", + "rows": 377, + "shard": "2f" + }, + { + "logical_sha256": "270015e6bce6a122cdfda49358aa42c4b3f70c6ff03c1137829bab116811cd5c", + "rows": 416, + "shard": "30" + }, + { + "logical_sha256": "b6b89bc9c9605ffb3893af09af4d0738bd8f1c7e369ceb466780a0df08fc4df8", + "rows": 431, + "shard": "31" + }, + { + "logical_sha256": "26c34e8e97bdee5132427675899e526c4508072c928f3502e001132ad9cf9b46", + "rows": 408, + "shard": "32" + }, + { + "logical_sha256": "838a93ccbb3cfacfa178701433c26f478c3fe80d5a4b4bb866d8aa2f696e94ff", + "rows": 383, + "shard": "33" + }, + { + "logical_sha256": "f3ff76443f2798f3394ebfad61b6b49a79587bf190908181e243842235cb8712", + "rows": 382, + "shard": "34" + }, + { + "logical_sha256": "b07ca21799b953dc4429979a1673215b3960fd3933c0f972fe57f162ced172df", + "rows": 385, + "shard": "35" + }, + { + "logical_sha256": "4fdeb246497ff7ab49ffe838a5e9c25c0e1a3753d494eb0213e5eda38b5a0c71", + "rows": 396, + "shard": "36" + }, + { + "logical_sha256": "903f0b828dd7d945514ff4592580c8c21ccbfa3ad551d67bfccc481f3eb63c28", + "rows": 412, + "shard": "37" + }, + { + "logical_sha256": "829a589fe4cf45721346926173e258268044119e27c57b02580a62c423ffae6f", + "rows": 399, + "shard": "38" + }, + { + "logical_sha256": "40f064ed581cfc2a4d731b8bcce2a76c8b7bb534437b989b108d2d222a9c458b", + "rows": 408, + "shard": "39" + }, + { + "logical_sha256": "a21b0474ce0e63282e90fecdff4b75fd0aa0f989215ca77e2abbe064c3af2cfd", + "rows": 407, + "shard": "3a" + }, + { + "logical_sha256": "fa735755cc9b87e2340ffe8a66e4136f447985e31b3693c46a9aafa38103332d", + "rows": 390, + "shard": "3b" + }, + { + "logical_sha256": "01d785eb7ff52af4fd528767f14d1eb60c20b5c720ed418b3a6a9f74b7db8440", + "rows": 396, + "shard": "3c" + }, + { + "logical_sha256": "24a0c8aa13c1599e0422829179f808145e06b6dc003f19d553dc3c8db5403577", + "rows": 385, + "shard": "3d" + }, + { + "logical_sha256": "ead6f0b0c156e1292b5551e16b224f92f88598744d11c3ca5ecae4c08eee55c4", + "rows": 401, + "shard": "3e" + }, + { + "logical_sha256": "03c5d6ba6b2906dbfd156607f46041728cd29d2c9dfdaccc4ba431adcec3da11", + "rows": 373, + "shard": "3f" + }, + { + "logical_sha256": "8f831c9e50d4aee63a0a9feb8ac5460ca338e9c81040a710b93ae586ecfc0661", + "rows": 397, + "shard": "40" + }, + { + "logical_sha256": "5c558334d8c8daba59304aef9787d1c7e28fdc4a441bf00ee707d145ccca755e", + "rows": 375, + "shard": "41" + }, + { + "logical_sha256": "23479a52064ba98d30478402e74462d63f669889dedd9099b639991d9018a7b2", + "rows": 402, + "shard": "42" + }, + { + "logical_sha256": "8ceb31884b91b4963676bc1a23f24b7045d8bbf30b124faa6366a06d474196d7", + "rows": 401, + "shard": "43" + }, + { + "logical_sha256": "2d746b6ed3113da1321798f6bea2174f111d8e1f62fe65cf35d4921371799e84", + "rows": 424, + "shard": "44" + }, + { + "logical_sha256": "db08605e04acdbdc2803ac690b8097c6b785160310acba316cbb4cf00b99f34a", + "rows": 406, + "shard": "45" + }, + { + "logical_sha256": "b0d4959e1df4173e234b12008968f2af4e63f5275bf7c9906e7569a181e96141", + "rows": 377, + "shard": "46" + }, + { + "logical_sha256": "ad34463b0c8737beb24dd2195d66167eacc0a4a7632844a343c76efee47f81df", + "rows": 376, + "shard": "47" + }, + { + "logical_sha256": "a93a250879988fb4d923a9f72c43c3ce806b760c36ae6b75b83f8cf62e8bed44", + "rows": 405, + "shard": "48" + }, + { + "logical_sha256": "3441ad48c61b64e959569e592d7fdd8f310ebcd898213c41ba6ed5eb8c88ef96", + "rows": 378, + "shard": "49" + }, + { + "logical_sha256": "c2f0a5f9a37c99031052cc1164a3136352429c07da150e719777fa4d06237d1a", + "rows": 390, + "shard": "4a" + }, + { + "logical_sha256": "232e4b1098e1a5572ba70a1e11087caf900d7771f939fba56dded576b162d9c4", + "rows": 388, + "shard": "4b" + }, + { + "logical_sha256": "76baa47418539f92a5d32241838cc9181a9eae877dbff7181e7abac2392318c0", + "rows": 416, + "shard": "4c" + }, + { + "logical_sha256": "2880982332b8c6001082085cb1c24d5f4b9d31a4e803b67eaa2aed336206c530", + "rows": 386, + "shard": "4d" + }, + { + "logical_sha256": "1f4add7ea7ad890b58cbb51c76049fd10d9463aa7c8baf2ae496a1a3d1b94bab", + "rows": 379, + "shard": "4e" + }, + { + "logical_sha256": "663189873f7838bd209ae3ccff63d5d9be557d9d5e915f7c63bb7a13fe5e3b28", + "rows": 412, + "shard": "4f" + }, + { + "logical_sha256": "b74b5070848448efca345c41c352e5d2b84270fdf403f7012f0166b3de73e6a6", + "rows": 372, + "shard": "50" + }, + { + "logical_sha256": "860710026b770735334c78e41f912ce157f613d9c5152700dc3ba9a7e1732fd9", + "rows": 367, + "shard": "51" + }, + { + "logical_sha256": "0693996ae9ff87eebef804e7089dea58055c25d8da0c8ac639158addeb79eaea", + "rows": 406, + "shard": "52" + }, + { + "logical_sha256": "997280020b6f63e0dc120ba0308d6b19c62b394158505d192a9310a467ff685d", + "rows": 382, + "shard": "53" + }, + { + "logical_sha256": "9c40a7c802f9ca4fdfda0815fbf767df4443ea225117fce9848e384086e5e79b", + "rows": 378, + "shard": "54" + }, + { + "logical_sha256": "c44d5ae323088bd7380bf8c804d21eb84da7bc89c2ab2d432ea005511b22d6ac", + "rows": 413, + "shard": "55" + }, + { + "logical_sha256": "3d6fc4feec0f252436095d39c55bc94b48b2a2444c74a93808ac72cdc33a0984", + "rows": 403, + "shard": "56" + }, + { + "logical_sha256": "2594773f32767ede3e596ba16f1fe1e19c6f5b304c0d62f956428cac45dbbde6", + "rows": 400, + "shard": "57" + }, + { + "logical_sha256": "c95c63811227528a1c6bc51b4857b92c50bbc4bba79d57e2784907f7e5327590", + "rows": 376, + "shard": "58" + }, + { + "logical_sha256": "b5255eb6f7d86dc8f76841f960b6e6c4f9575599486a544da5faeab3c59e8ac0", + "rows": 417, + "shard": "59" + }, + { + "logical_sha256": "6744f823212265a60e4f024c813677b18e9c3779cf4db6b99d07f92bc19d2da3", + "rows": 405, + "shard": "5a" + }, + { + "logical_sha256": "ed98c5bb64ce20702b15c27080dc2c7635d29b9be3d5f70221e4ca0f7765aadb", + "rows": 381, + "shard": "5b" + }, + { + "logical_sha256": "fe9e61fbde64270bb94fee438ec4d9710c8b8054c9a7b9ba44b3495936517290", + "rows": 386, + "shard": "5c" + }, + { + "logical_sha256": "82cb8302cf473a7891c5cf02bcaa1da3e9961043cf607eac7fa87ba89113155d", + "rows": 385, + "shard": "5d" + }, + { + "logical_sha256": "8b047e484048b0d587dc0d785a682fe5db2748df00f583bffbfc5c6cd628a348", + "rows": 400, + "shard": "5e" + }, + { + "logical_sha256": "83b5fc300672f3b737563bb6a16cbcfa7d479d7da93f2828a6131c6506ea3465", + "rows": 376, + "shard": "5f" + }, + { + "logical_sha256": "28b56a9467a4a3cee7ffdc706569dce9b7d9442e271291bb5c5bb847f90f6ea3", + "rows": 382, + "shard": "60" + }, + { + "logical_sha256": "8851371a8b0b56867041f9fb33c61bec8770ccaca6e17dabea1164dc5e20de57", + "rows": 384, + "shard": "61" + }, + { + "logical_sha256": "bcbcc363386dd26cf6761d58a907a867dcd6941004aa18f4a9573a7376a070a0", + "rows": 380, + "shard": "62" + }, + { + "logical_sha256": "831ea673c65c9d3830544a8d5957f137b4a38d723b0a0bd67214b750561c3ea7", + "rows": 366, + "shard": "63" + }, + { + "logical_sha256": "61a5194f3ade70e20c2f359679f9bbf15ed3d18a11df14d02a9c2711295d3b88", + "rows": 395, + "shard": "64" + }, + { + "logical_sha256": "39beeb8ac3fa623367ae120d94af35d9a0a04f407465e9671b87f3f17f6cd3ec", + "rows": 367, + "shard": "65" + }, + { + "logical_sha256": "6a734cf8966e5258c1d941cbb95378f3bd01e77d9f457b95d1d19fd1649dac87", + "rows": 399, + "shard": "66" + }, + { + "logical_sha256": "5a34fc9402f962ed4375b4f4893e367d294c27759e39257fb1664349c483b201", + "rows": 394, + "shard": "67" + }, + { + "logical_sha256": "8b5a10c3445b7ee0c286010a5b5f8437b201f720a86e880b1977d9581cef97d9", + "rows": 388, + "shard": "68" + }, + { + "logical_sha256": "d1b408898aae350e578c44588654e760bae47c0e38b9101a4d6e128e7c5fedc7", + "rows": 431, + "shard": "69" + }, + { + "logical_sha256": "8e4d8355abfc5bbf79b9327730cf1c108efb97c3c53fc7c7aafb0386e0dbc13a", + "rows": 414, + "shard": "6a" + }, + { + "logical_sha256": "004e8336fb196d63194b692ca52ef96cdddbe6c6c2ce674627efff9e5670820f", + "rows": 389, + "shard": "6b" + }, + { + "logical_sha256": "5e433295708210698f748a4e2bafc692185c0503d4c5c36bbe016b9354b9d879", + "rows": 409, + "shard": "6c" + }, + { + "logical_sha256": "a7ce9439c81674d7f04669711f36be28f5c6cd4224f1cf04f2c0302cd95b2825", + "rows": 389, + "shard": "6d" + }, + { + "logical_sha256": "d7288012228422e26429a088bed83be381629ce8235459d22040bb44286ebd87", + "rows": 411, + "shard": "6e" + }, + { + "logical_sha256": "1980d254a893e80794ea495fe14d352626f8c40d7930f3fa24366bbfacb0f13a", + "rows": 378, + "shard": "6f" + }, + { + "logical_sha256": "a0922f55b53a2813a1ab0c3697e464aa3cf4d5526d5250b8d03c72def224ad7d", + "rows": 362, + "shard": "70" + }, + { + "logical_sha256": "2b3466cbd7595f237995071fdf70cfaaa53bcbc9b64d1035d3758f1833c8afaf", + "rows": 413, + "shard": "71" + }, + { + "logical_sha256": "eab97e01cb772c72f5acbfaaf9bd2d7e41cb057f6ce8fdcaf563400e22f12414", + "rows": 401, + "shard": "72" + }, + { + "logical_sha256": "a568b5bc68ebd74f24f3f56668292405bd87bb37fd65271b033501baffbb4e93", + "rows": 389, + "shard": "73" + }, + { + "logical_sha256": "a2da3bd500e8a57f19ed6d2e6e5feb0efd89a7cb0ccadf4ae2ac1e7d9f80ca43", + "rows": 404, + "shard": "74" + }, + { + "logical_sha256": "a26890d35f0b86e8792860cbd87f695126b21bc7a84c00a0740bf2aef9ec39f8", + "rows": 397, + "shard": "75" + }, + { + "logical_sha256": "f2d8bc41030be5cd571504fca71f4bd63f90b1ef9f4cbc79a27a2b445eec12e3", + "rows": 386, + "shard": "76" + }, + { + "logical_sha256": "c1f3bcb773ce019a140ee15bf1c648f510e222d1dfa4d066d1e2839b08f77d18", + "rows": 369, + "shard": "77" + }, + { + "logical_sha256": "764b109be806c062c97ee9d9488b9a772835254faaee341cd6f6c73178b21988", + "rows": 395, + "shard": "78" + }, + { + "logical_sha256": "5fa8b45f32d9f9b2cfda95ee31924680a78f2ee9cd12b2c772dd7ab696b34730", + "rows": 419, + "shard": "79" + }, + { + "logical_sha256": "007e08f892ab32f1af03037918790cb57f0b7ba4124d8ef138b5d0139c3754f2", + "rows": 404, + "shard": "7a" + }, + { + "logical_sha256": "3a4921648383cc734e21c6a401a88c3ed83aa6e24fb4783cbf4d9205971b9ea4", + "rows": 411, + "shard": "7b" + }, + { + "logical_sha256": "48ced55ffd2e785349da1f9087f95cf2fdff390cc920f026a99eaea32e62e703", + "rows": 370, + "shard": "7c" + }, + { + "logical_sha256": "fc2d32849e17ab448a7ba9c2926b47d8825402a539348865594ddcf16e48924a", + "rows": 355, + "shard": "7d" + }, + { + "logical_sha256": "298504f5bbcf36de0c1abc64750a491963606c557d44399582aa67cc8bc2d63d", + "rows": 412, + "shard": "7e" + }, + { + "logical_sha256": "bf160a018e8f546addcb9ae704e8ce561d57567c67b4395dcfda409e3671c55d", + "rows": 419, + "shard": "7f" + }, + { + "logical_sha256": "e1122ecc428ba542bd026307faa302166fbfc258f6899f7c88e289674b5c819e", + "rows": 403, + "shard": "80" + }, + { + "logical_sha256": "9861a2c0da5318d759c9f31c38f04bab9542da0af2b4cdf3a060fa150ade0aca", + "rows": 393, + "shard": "81" + }, + { + "logical_sha256": "7a51e5b37befaa6aa09b2e987d9f515e36ac840a3de6e73b333ad77071019fd1", + "rows": 388, + "shard": "82" + }, + { + "logical_sha256": "83386ccaf626587c707d0557e6a17d527594dd72946d8a6ad26aa701b0fbb8d7", + "rows": 366, + "shard": "83" + }, + { + "logical_sha256": "d7bb8c6ed47ccf764fa3c127186f5a1f47b942a2ce72972f784d96779bce0cbd", + "rows": 387, + "shard": "84" + }, + { + "logical_sha256": "371499fcdc4cf42423fa2fb2d7a6050ed879322624f73640c62e11e6bb8c8431", + "rows": 384, + "shard": "85" + }, + { + "logical_sha256": "93ff69911504278e4dcd4a9bed371c7ce0243b8a3020124b7546ab3d6879eace", + "rows": 385, + "shard": "86" + }, + { + "logical_sha256": "cb4d053565e283359401ff9f421660cae4d5b600f4c0ebc25843c71b9e82a9bc", + "rows": 390, + "shard": "87" + }, + { + "logical_sha256": "1102d42b27adfc5aaca4c3a0cdf6a733af56bfd3684f5d9fdb6e51b9dc0ff3d7", + "rows": 368, + "shard": "88" + }, + { + "logical_sha256": "cd0e2604991d5347e19c3a746e5b357c65c8a735610881b784478ee2c79ffc32", + "rows": 378, + "shard": "89" + }, + { + "logical_sha256": "adbb4fec76c5e1819caa4c0d0f3a4a041e296f3777c2c30e62534184184d8a34", + "rows": 379, + "shard": "8a" + }, + { + "logical_sha256": "a817c0b2cc02b2cfe037f42d58f3b6829a7edfe477fe49afde135abf4f501de8", + "rows": 342, + "shard": "8b" + }, + { + "logical_sha256": "6dbfdd2583349bc1e233c5880d30010a890ac8deadff191cfb0ef14f5526c7e9", + "rows": 400, + "shard": "8c" + }, + { + "logical_sha256": "2510c8f14a9d58a11df4bf7bb890a801f181f17b6969e6c8fc8c1653a9bfa58f", + "rows": 388, + "shard": "8d" + }, + { + "logical_sha256": "9af1d5264e1ae6a79dafb9db9a52f807a2618b2fac941f73bc9a65562450c1cb", + "rows": 393, + "shard": "8e" + }, + { + "logical_sha256": "6a83007ed65b7e2e291374225d6d26dd6c93769d004fe9de7f09a1fff6172832", + "rows": 404, + "shard": "8f" + }, + { + "logical_sha256": "4c90cf47e48203e71a0e25547688649bd65db47ab93ec34dc3ebc86db1d58939", + "rows": 396, + "shard": "90" + }, + { + "logical_sha256": "a63afae7c948f0ca1a569b07d9cf6cd47214e74c67ec7bca6fa3aaef30372347", + "rows": 370, + "shard": "91" + }, + { + "logical_sha256": "a2fd57ec43636e37a155e12795ce5ed66534da08eabaf5f3480a7718adf4f134", + "rows": 380, + "shard": "92" + }, + { + "logical_sha256": "c26d07ed19587705323bdfc8de70e7294fa2ac3c530e51f3376527810e1bb23a", + "rows": 404, + "shard": "93" + }, + { + "logical_sha256": "8765238c2e3c7cdc39764a92600ac15fccff72b45c4c169d8df6839ce8573bca", + "rows": 394, + "shard": "94" + }, + { + "logical_sha256": "19158b9732935311d20daa24623b48560f22882d7eb6188c3e52aabb7a480081", + "rows": 386, + "shard": "95" + }, + { + "logical_sha256": "da5d03e361b251fe48e3ac7beb6f4eb1669da7cc25c88e1158f41b4c1a3623ba", + "rows": 410, + "shard": "96" + }, + { + "logical_sha256": "3082501d0d2c90729b65e4a174a213c645b452c852ac9dd9cca69c075aa1a4e2", + "rows": 409, + "shard": "97" + }, + { + "logical_sha256": "840ca1b0f9f7d9a3c75b1030df5d2ccc007607c1f593d8dd4cbdcf81fb1b1142", + "rows": 391, + "shard": "98" + }, + { + "logical_sha256": "70066fb114115097dbe130843cd3b7fdf446186c23238dba3885d19615e37b6e", + "rows": 369, + "shard": "99" + }, + { + "logical_sha256": "558a5129d446d144ec35f9d3f067ed941f5d846d30f9ff80e6c02cc275f6a159", + "rows": 426, + "shard": "9a" + }, + { + "logical_sha256": "ddab2b3ec97be5d77c365c705e444f6aa980fd23d03cfcfa76e06e473c36a6b6", + "rows": 383, + "shard": "9b" + }, + { + "logical_sha256": "9739f8d6f9fa62567dfcc729c98f6f5cb097208aa86eb007d6d0b265b2661b8f", + "rows": 354, + "shard": "9c" + }, + { + "logical_sha256": "fa7b0edd30ef8029fd2c2cfdacf779302992536c1f636f1809837c850b0deab4", + "rows": 398, + "shard": "9d" + }, + { + "logical_sha256": "bd47c17ef446e20147b2532d6ec034366c981fa7db9dd725a3b54a8650aedb50", + "rows": 413, + "shard": "9e" + }, + { + "logical_sha256": "f04d7def4f4667ec6008b47387c4dd643c639c64983382bee22b44a3dca8e595", + "rows": 387, + "shard": "9f" + }, + { + "logical_sha256": "06db183e2ccab812d8d40e33ee0321d9f7f8c17da63df610f0c2a7d96aff94a2", + "rows": 393, + "shard": "a0" + }, + { + "logical_sha256": "52008c68e553437feef951d3a2c401fa87d9b69998db5f212c4d37ec112b9cc2", + "rows": 397, + "shard": "a1" + }, + { + "logical_sha256": "5192669b31a61163605154db6ced5de1b60575a8067eb6d68616a197cc5767c5", + "rows": 377, + "shard": "a2" + }, + { + "logical_sha256": "7f4b5003854850202896b3f743f94b622657ab1f5261ad638ab21ee8d25e3918", + "rows": 405, + "shard": "a3" + }, + { + "logical_sha256": "cee05caab1db566b9cd3a9d827095e0139152cde35c97f5d8d9cb709a5c5e44e", + "rows": 409, + "shard": "a4" + }, + { + "logical_sha256": "cf2abbefe3f6d167eb3e90f0f5f27ae1ce0480e6b2508b37d338c18edf0abfa1", + "rows": 389, + "shard": "a5" + }, + { + "logical_sha256": "f155c338907dc78779f7a4eb5b967dc456ce09431c5495c978e53bf3df7ebb43", + "rows": 399, + "shard": "a6" + }, + { + "logical_sha256": "308f582f284c30f1791bdb066597f4f9ba9d92c7a3db6e15c046af2fa9a17b5b", + "rows": 389, + "shard": "a7" + }, + { + "logical_sha256": "b4dda40a0b05c6ede39a1a4ef5f19d930b7fccd59d1b05ba91b7c9f5188b4e82", + "rows": 377, + "shard": "a8" + }, + { + "logical_sha256": "683831e361ee88507447f389a36054626ec271a276f554a2c733f0ad1e41d835", + "rows": 404, + "shard": "a9" + }, + { + "logical_sha256": "9d67931a54b8a5e55e03cf90632c6b4ed984d9a4d1779adc11bfd3201880a577", + "rows": 386, + "shard": "aa" + }, + { + "logical_sha256": "5fbcf6c072dc61d7d480c15dd91b762aa0f9db64e7e60384c584f5b590494f9e", + "rows": 373, + "shard": "ab" + }, + { + "logical_sha256": "b4e541317d0a65a2855df8c9ec10bbe96c2f544cda0e44040631f3e41d512b6b", + "rows": 409, + "shard": "ac" + }, + { + "logical_sha256": "6a1aa0fa42f650d6f03b5ea8266d8577e4b519fb4d2f725ee9e22dd57aa1268d", + "rows": 430, + "shard": "ad" + }, + { + "logical_sha256": "1c64ea684c93ea61bf11c979e8b21279dfcfb5c4d3421c1e36a8aae7fe9645c4", + "rows": 399, + "shard": "ae" + }, + { + "logical_sha256": "704d0b79b1bb46f32d40ae4f4402b5a8804096d1097800def062ded8e4187df7", + "rows": 379, + "shard": "af" + }, + { + "logical_sha256": "a347243a2fc53ee59c169e7b622fc9bb7530416843e39cfad7c6ca49ef69085a", + "rows": 382, + "shard": "b0" + }, + { + "logical_sha256": "7bb4c37a6533d50aeef69bbb810fd532a0056b9699a083066b7e5d246c775173", + "rows": 420, + "shard": "b1" + }, + { + "logical_sha256": "5aadecef624bdff1818657d5a62d6268c35d98154713cf65684cc272e1601f2c", + "rows": 370, + "shard": "b2" + }, + { + "logical_sha256": "285cc2f540b5b173faaa40977bc97cee95ee8e952c665bbfc26c4fdcf6356d14", + "rows": 416, + "shard": "b3" + }, + { + "logical_sha256": "ad1d019b04b48eca9a8ad7a9882e09997207814a6db4154d72ea0a656da07303", + "rows": 417, + "shard": "b4" + }, + { + "logical_sha256": "0388c04989bfe72030c70e7d293e20b674b21593c648537a04b7e26588ebb6f0", + "rows": 376, + "shard": "b5" + }, + { + "logical_sha256": "95101ef1a44f6b449df902ae2082981814cfd12f4b684380fb1f5ad4c469f764", + "rows": 414, + "shard": "b6" + }, + { + "logical_sha256": "5dc14944fbb83fa2663be483ec885252a7e168afbfd5aac058247ebe5b6f3baa", + "rows": 414, + "shard": "b7" + }, + { + "logical_sha256": "547962b0c2c381e9cc704982d196e48693e084f5c97b2d0c8fb62d3024d4678a", + "rows": 401, + "shard": "b8" + }, + { + "logical_sha256": "afcac04d556ba5818b5338ad8a600862f70d97a7fffe4b4aa72ebddad5785366", + "rows": 390, + "shard": "b9" + }, + { + "logical_sha256": "ea910f8fb55a4323a0223e919f40636603d6dd14b864bf11454650136e144563", + "rows": 388, + "shard": "ba" + }, + { + "logical_sha256": "0111e8aa40ec95ce2ed8ef23fa02129a2c62bcca08bdf22629e383cc0adc57ba", + "rows": 353, + "shard": "bb" + }, + { + "logical_sha256": "cd62c241067121dd800bcab92b2d2911ec1615da31553932db335cad1991e9df", + "rows": 411, + "shard": "bc" + }, + { + "logical_sha256": "f74c4dec842593ca47fbfbd36963d451921d9903fbfeb8485585c8a1d9dc7586", + "rows": 380, + "shard": "bd" + }, + { + "logical_sha256": "93294c1e4aa34c35da289cb14aed1293f7dd75e41cf841f63d077b9fc8b8cb5f", + "rows": 395, + "shard": "be" + }, + { + "logical_sha256": "1dc83b99ace5703ec808ca8197916ccaaa900237e5f5c9f4869a378b6de8573f", + "rows": 376, + "shard": "bf" + }, + { + "logical_sha256": "ff1aeabfdf4dbb6be2f3c437f491be404e828ab23fc3bc1f74a38fd7d63714de", + "rows": 423, + "shard": "c0" + }, + { + "logical_sha256": "3aea504b08a8969d1f3e709213a39175d6b50d4b46bc8ed6980af9b625872450", + "rows": 378, + "shard": "c1" + }, + { + "logical_sha256": "8fbddc2cca36c895375058cf52cd9351394d46915610690d077588117f83eb6e", + "rows": 390, + "shard": "c2" + }, + { + "logical_sha256": "fdc2a581167fdb2efb784f5e6880aa415f1a6ba5a9bfce6ec21fc8a0b97b9ee6", + "rows": 352, + "shard": "c3" + }, + { + "logical_sha256": "bc22e4a573d30bdf422ed996230f61d8f78d51e4b704018a542e9b38762b75dc", + "rows": 377, + "shard": "c4" + }, + { + "logical_sha256": "644625bb1c14d7ff6e592a90659cdd777f39f7f281b5b0fe70561397f4076f0a", + "rows": 414, + "shard": "c5" + }, + { + "logical_sha256": "c029f465d287b86a1fefead593e4273ba6d2261df38b6f556e072c3dbc762b47", + "rows": 384, + "shard": "c6" + }, + { + "logical_sha256": "3afebc7028ef1259b3dfea5d162cbfc5095bd4a74dc44d2bd9e1c8056a3b2649", + "rows": 427, + "shard": "c7" + }, + { + "logical_sha256": "8d71b92c492710e428c8a68a78fb54eb8c3be510fc87b839257f87d00b842772", + "rows": 371, + "shard": "c8" + }, + { + "logical_sha256": "6a6f3397979c1300736822716a6b805a20e0b8f22f0ff381ed67520c1f595123", + "rows": 358, + "shard": "c9" + }, + { + "logical_sha256": "b927c941338e38886fea5f8e81325e751ed58b2ad9f82279f76d46df265790d4", + "rows": 399, + "shard": "ca" + }, + { + "logical_sha256": "d1dc2e3c16bc9ad72c0dca4173acdff5b3f8e47d7d84cc245074836283af7432", + "rows": 387, + "shard": "cb" + }, + { + "logical_sha256": "c74a2ff07e1f782ac5e594db0e8616c8bfc9b9ef0c107c387bf6b12dc38bf843", + "rows": 362, + "shard": "cc" + }, + { + "logical_sha256": "282d8c1e0f9dc83f8b5c47a42966c590174d32d9a8cf9ae5d21a455f492887a2", + "rows": 420, + "shard": "cd" + }, + { + "logical_sha256": "830fcc0786ba5f149557af758e3bcbe65c23666a1d75316efe8e455954fbbd26", + "rows": 374, + "shard": "ce" + }, + { + "logical_sha256": "e806edbc810ef93410212abda89c5d5fda40cd9129c6ba11c9ea5858a3df4c54", + "rows": 388, + "shard": "cf" + }, + { + "logical_sha256": "ea3df90dbb47c2708b5dcb8adcb5570a874b22356ee2f1ae6b7b16ba1b184d47", + "rows": 383, + "shard": "d0" + }, + { + "logical_sha256": "a9c922eedd68d00c6fa39486c49a4d7f48b72e5f872bd308f2e69ad9b9cf31e5", + "rows": 396, + "shard": "d1" + }, + { + "logical_sha256": "aac80b12eef9d0758ca00453917d0fba511f42ac9650ad0aa42043e9534ba2c7", + "rows": 374, + "shard": "d2" + }, + { + "logical_sha256": "708992d7ef0a003be71c0073749584621c2e5769354406a90dd770843441e5e8", + "rows": 388, + "shard": "d3" + }, + { + "logical_sha256": "ee2517781ab1dbf6a5d657575e04e62f6e8e0fbe1b280c071e97c18dbc9dc9b5", + "rows": 415, + "shard": "d4" + }, + { + "logical_sha256": "10d935a9352672ae3d89073d53fc356bf382fefff815473371c7cbafe8a6ff94", + "rows": 403, + "shard": "d5" + }, + { + "logical_sha256": "c676d795e4626a9d5fa40c5f32313252aca512a0091cdb0ea8c4e5e6f43a554b", + "rows": 422, + "shard": "d6" + }, + { + "logical_sha256": "93bd179f0f10d02c569545bd0f1f6695700734e796ce268fcf45506e31e64b68", + "rows": 436, + "shard": "d7" + }, + { + "logical_sha256": "d38bc7cb9757d3b4957864622fa206d2e8d45c17c733af121b0ed49a0421ce42", + "rows": 379, + "shard": "d8" + }, + { + "logical_sha256": "cdc9fe1484e4cd3ee65ffb434e345b4281bb9a5e4a4162a2e51f277f4af11aea", + "rows": 349, + "shard": "d9" + }, + { + "logical_sha256": "81779e03c8ad5dd774cc41993881f9187beef15c8382b90baa0e47a3e7e5a428", + "rows": 380, + "shard": "da" + }, + { + "logical_sha256": "d82dab640c6336117d1edf457d0bbe4606402410448e008352c72adfe20d655d", + "rows": 365, + "shard": "db" + }, + { + "logical_sha256": "08c9de50b4e076c799e2e6bef7907b55ab34b5f4b5d1faa3d1f1b6f243e2e9f1", + "rows": 343, + "shard": "dc" + }, + { + "logical_sha256": "643177195e261131524c7f4ebfcc71c24fc659b07189cc989d4d77306e374ad2", + "rows": 382, + "shard": "dd" + }, + { + "logical_sha256": "463714393c4dfd91cbe9713c99f160776d91f5671668b61d555c15cb50acff8d", + "rows": 388, + "shard": "de" + }, + { + "logical_sha256": "fd276fd59d3cd3499cc067bd780ee80dad0773cca94b270a9a26cf10d3adce23", + "rows": 372, + "shard": "df" + }, + { + "logical_sha256": "d64f2af9ebf37ab47f49abdd51bed450f291c44a6f891de66bda6250e1a34fc0", + "rows": 401, + "shard": "e0" + }, + { + "logical_sha256": "8ec84d783dea6209ebad6bc402d606e5a62e6824347de391cfaca4fcf33013a0", + "rows": 378, + "shard": "e1" + }, + { + "logical_sha256": "88442eb8de314480d16e610eaf54a161c61c3ea35a20ad75e483889f6a8d76b9", + "rows": 345, + "shard": "e2" + }, + { + "logical_sha256": "8b6483a9660e88851bff627349a5c5664439d9e3a97f7a51d8fd3a4b74ccfc41", + "rows": 397, + "shard": "e3" + }, + { + "logical_sha256": "e309156eced5138bfe4c2e79311f8b56fab8e3ba960ddf9b8afa1a263f91ce05", + "rows": 368, + "shard": "e4" + }, + { + "logical_sha256": "5325d917ffa4be6a3350f7e3b68e1235e0cad61091da2407f2373066f51739f8", + "rows": 387, + "shard": "e5" + }, + { + "logical_sha256": "ce560d4f5d60ff84c3d37b59062321e585abdb7b1bf3b4dc040ba194730800e2", + "rows": 404, + "shard": "e6" + }, + { + "logical_sha256": "d426b56191878d49c225d633144075b4d730f57a9d003b812cf1ad0c49d0ec70", + "rows": 376, + "shard": "e7" + }, + { + "logical_sha256": "2128d91bf5e634ae54c78a3c9dbb08fa79bd975f29f00441a747f41e7141f27a", + "rows": 392, + "shard": "e8" + }, + { + "logical_sha256": "2d3a28f7c3829fedf2881fed67ce06f1a6bce639db9f3d4965cdbc5f8d5013e9", + "rows": 411, + "shard": "e9" + }, + { + "logical_sha256": "8bc1967111715a6dd78f9d96b8902b0ba695803cd1fd25c361e65c8339da5b72", + "rows": 389, + "shard": "ea" + }, + { + "logical_sha256": "9d3ac4907bdc7061a3f7e52209f2d4c1392e41eada469fb3220147a39e84dc75", + "rows": 412, + "shard": "eb" + }, + { + "logical_sha256": "470a8056c044c675ca39acba83981fadc2d5d2bb4673b4cafd0d08139585afa7", + "rows": 369, + "shard": "ec" + }, + { + "logical_sha256": "e006ea32ce11032cfa37ebf28dfada546eb8bbf6e19849b34dee621a1ce108b5", + "rows": 415, + "shard": "ed" + }, + { + "logical_sha256": "a936fa6aa011c13498eb88b5161b220953d4b34fb9403f71767dd1436b7fd8ff", + "rows": 378, + "shard": "ee" + }, + { + "logical_sha256": "a881886c11530238c206fe35ed1bfae40ca743a6658d883e6552a89a56c25aa7", + "rows": 438, + "shard": "ef" + }, + { + "logical_sha256": "bc79ee7eaa57c778142257efc85d123f6ae4a23c66610a0fbeeeb360edc34dc1", + "rows": 358, + "shard": "f0" + }, + { + "logical_sha256": "f3d71fedf721cca2d191146a6babc88420acd6650caffa9fd9fed70104e79245", + "rows": 373, + "shard": "f1" + }, + { + "logical_sha256": "8730bb2d539e676f0703b7c6e44804ad474e08eff38b1dc54d4a1e45ec9fded3", + "rows": 368, + "shard": "f2" + }, + { + "logical_sha256": "26e720f9641854bc171857b5be1aeaa3bbfdbf4e010374ad7d9d5bb177c716f3", + "rows": 412, + "shard": "f3" + }, + { + "logical_sha256": "5729692c7109cba8aaccb8284ec3ab2e17e606cff9e52d97eac6395e97030e15", + "rows": 400, + "shard": "f4" + }, + { + "logical_sha256": "6cd7581a1118e25bda88f57f43f8c80b86475d1ae3a2f21320cf4d45c76da22b", + "rows": 380, + "shard": "f5" + }, + { + "logical_sha256": "d1b955162a0d0b90614a06bb64b3b44bcfc2c5dd7768ddca885d88bb636ec575", + "rows": 390, + "shard": "f6" + }, + { + "logical_sha256": "db38aa7e681398c1a6b74b3f158e1708f8f80cb87c8f5686d2a0f1ee68c1b079", + "rows": 398, + "shard": "f7" + }, + { + "logical_sha256": "83d68014a22a8d5ae50c66a886a78ffbb609e5008c02742cd3604f7d730456b8", + "rows": 384, + "shard": "f8" + }, + { + "logical_sha256": "1bdf25dfbaefab14ce0e763022e6151b891e40c5123b3ea1c854534f25802f2b", + "rows": 401, + "shard": "f9" + }, + { + "logical_sha256": "40a6d3450318c85cf07f885e0e423d054280aa203b8426053e3fa8f103e124c9", + "rows": 381, + "shard": "fa" + }, + { + "logical_sha256": "3fe125776d3d32d99caa5e88191d5b99ba81bb29a64503c255a99a8bbc24fef0", + "rows": 407, + "shard": "fb" + }, + { + "logical_sha256": "27108d1c822202b125778e9142ea9a13cd2bb4247e17abe33ca87ccee948fbce", + "rows": 393, + "shard": "fc" + }, + { + "logical_sha256": "ba28ab708a455c6696b72e5a147a259eeb04ca82f3925077a1ca44c18e69ca4c", + "rows": 399, + "shard": "fd" + }, + { + "logical_sha256": "0a9d759e47e9fb67a43b0e5050efa88bb9cfe41bea5ec074aeb655b4e2df75a0", + "rows": 381, + "shard": "fe" + }, + { + "logical_sha256": "0420d1aa3689fa19679ac45e057081b0e29317e3debb842daf3d9a0890f18153", + "rows": 389, + "shard": "ff" + } + ] + }, + "elapsed_seconds": 14.496916100000817, + "events_per_second": 6898.01881380788, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 100000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "724ae0d3ae5dd7de305e9c6de8b4a3a801cfd756a07cf34c687ac56c2f8237f6" + }, + "partition_manifests": [ + { + "content_sha256": "42ba0cc9b96be842eed886cade01b053ea87fa18d659474d652706a13c4e3b29", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "1280da328530931403ba87847b201d4447fbcdf9c2acca91faff9d9c9e174540", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 99999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 437387264, + "peak_rss_gib": 0.4073486328125, + "quarantined_rows": 0, + "retained_bytes": 11506655, + "rows": 100000, + "run": 1, + "snapshot_id": "sha256-6295e7f65968a8eae9ce1048c38c8b0da611074d0f7b5928322419e6f4b1837c", + "snapshot_logical_sha256": "6295e7f65968a8eae9ce1048c38c8b0da611074d0f7b5928322419e6f4b1837c", + "snapshot_manifest_sha256": "8a2b1d7108c51f2bc3952cd91c6959cd528f8505b24926dda60862bf0c1e76de" + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.4073486328125, + "median_events_per_second": 6898.01881380788, + "minimum_events_per_second": 6898.01881380788, + "retained_bytes": 11506655 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-1m-b.json b/validation/performance/m7-data-calibration-1m-b.json new file mode 100644 index 0000000..635b8b0 --- /dev/null +++ b/validation/performance/m7-data-calibration-1m-b.json @@ -0,0 +1,217 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "933017c0adce7a8d0c5910860b3a7ee0fb6c62acc3746f692d4831540e51bb59", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "abd59a3970903898f112c6d3599e39b0bd8b4f48304323d35ed847311a35f8dd", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "67b1cc806e16400ad8a6993b09cbf2a5fb75f115f0963d480d47bba11c8f4c85", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "62e772b3914687a26acae18e8b57afc2bfce2d3ce3d5ff956293c8cdbf74eab2", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "624f6203a75cbcb9cfbce0f2f8e5a65e827734e79e8cbbf73772928f7ab13a38", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "d0a321bc96c7a41c7670db52e87877f2fa9dcb4482a22fcdcc8234a0fd19d5b7", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "5dc6de5e58a2e8cdeeb32608efa2acae0dcfc17e849f0e5f1b56f878f19a916d", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "bc0105650c4315c3141b14c3a664bb836a7218257d816e39b14db41e0e03cd42", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "fa5bf3e9584821e575d3182458119d0baef343373d3aba4b1064230429a8faff", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "2ef02c4d3872b2ade0a952248d6c4846ef2d90e9a5a5c027bb56a9a00a20807e", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "7d0f84b8826ca0a1c51d13285f5dd9788e9cde4d24bece756df6844bba2abc50", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "981f63a53b124d233daa0b3be4bdbf2ba9e595ab6eef5b0286e20bf8a229f153", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "ae86bd9563372f97a535262cdaf314a270a2766e2f45a0a3e0999d480c31b2ff", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "8cb74ffa96f96852560e98cc63b826bca9d9b3ac4de790e8355b147a2eca42ef", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "bd72f9bab4cffeb56754438285069fdf2e0cd39c432c1cfa2752e5b206e8d1a7", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "378ff237c833fe7af8e75c0d19a23932b6825c8f9dcf62fa4027101bc1c3bed1", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 23.747903499999666, + "events_per_second": 42108.98027272235, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "365643bd96302dccdd32c33a9413e53d0e28a2b909e638d36212a09cd0fd0eb1", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 867717120, + "peak_rss_gib": 0.8081245422363281, + "quarantined_rows": 0, + "retained_bytes": 112665507, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_logical_sha256": "acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_manifest_sha256": "d30e299250afe543b8161864aa43ba96060ffe8c7096455781e45450be555fe8", + "stage_timings": { + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.900000127847306e-05 + }, + "_claim_database": { + "calls": 1, + "seconds": 2.2780072999994445 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 0.5792101000006369 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.04315560000031837 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 2.425336000000243 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 0.004460500000277534 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.34247850000247126 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 0.36739400000078604 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.8081245422363281, + "median_events_per_second": 42108.98027272235, + "minimum_events_per_second": 42108.98027272235, + "retained_bytes": 112665507 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-calibration-1m.json b/validation/performance/m7-data-calibration-1m.json new file mode 100644 index 0000000..d2d5551 --- /dev/null +++ b/validation/performance/m7-data-calibration-1m.json @@ -0,0 +1,217 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 1000000, + "run_results": [ + { + "accepted_rows": 1000000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 1000000, + "shards": [ + { + "logical_sha256": "933017c0adce7a8d0c5910860b3a7ee0fb6c62acc3746f692d4831540e51bb59", + "rows": 62333, + "shard": "0" + }, + { + "logical_sha256": "abd59a3970903898f112c6d3599e39b0bd8b4f48304323d35ed847311a35f8dd", + "rows": 62731, + "shard": "1" + }, + { + "logical_sha256": "67b1cc806e16400ad8a6993b09cbf2a5fb75f115f0963d480d47bba11c8f4c85", + "rows": 62688, + "shard": "2" + }, + { + "logical_sha256": "62e772b3914687a26acae18e8b57afc2bfce2d3ce3d5ff956293c8cdbf74eab2", + "rows": 62729, + "shard": "3" + }, + { + "logical_sha256": "624f6203a75cbcb9cfbce0f2f8e5a65e827734e79e8cbbf73772928f7ab13a38", + "rows": 62469, + "shard": "4" + }, + { + "logical_sha256": "d0a321bc96c7a41c7670db52e87877f2fa9dcb4482a22fcdcc8234a0fd19d5b7", + "rows": 62811, + "shard": "5" + }, + { + "logical_sha256": "5dc6de5e58a2e8cdeeb32608efa2acae0dcfc17e849f0e5f1b56f878f19a916d", + "rows": 62679, + "shard": "6" + }, + { + "logical_sha256": "bc0105650c4315c3141b14c3a664bb836a7218257d816e39b14db41e0e03cd42", + "rows": 62595, + "shard": "7" + }, + { + "logical_sha256": "fa5bf3e9584821e575d3182458119d0baef343373d3aba4b1064230429a8faff", + "rows": 62173, + "shard": "8" + }, + { + "logical_sha256": "2ef02c4d3872b2ade0a952248d6c4846ef2d90e9a5a5c027bb56a9a00a20807e", + "rows": 62350, + "shard": "9" + }, + { + "logical_sha256": "7d0f84b8826ca0a1c51d13285f5dd9788e9cde4d24bece756df6844bba2abc50", + "rows": 62366, + "shard": "a" + }, + { + "logical_sha256": "981f63a53b124d233daa0b3be4bdbf2ba9e595ab6eef5b0286e20bf8a229f153", + "rows": 62886, + "shard": "b" + }, + { + "logical_sha256": "ae86bd9563372f97a535262cdaf314a270a2766e2f45a0a3e0999d480c31b2ff", + "rows": 62128, + "shard": "c" + }, + { + "logical_sha256": "8cb74ffa96f96852560e98cc63b826bca9d9b3ac4de790e8355b147a2eca42ef", + "rows": 62453, + "shard": "d" + }, + { + "logical_sha256": "bd72f9bab4cffeb56754438285069fdf2e0cd39c432c1cfa2752e5b206e8d1a7", + "rows": 62475, + "shard": "e" + }, + { + "logical_sha256": "378ff237c833fe7af8e75c0d19a23932b6825c8f9dcf62fa4027101bc1c3bed1", + "rows": 62134, + "shard": "f" + } + ] + }, + "elapsed_seconds": 30.839012799999182, + "events_per_second": 32426.45951364651, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 1000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "d6008c0c7bcef8d2fb9bad2451451af81a6200d7cd6f387f0e018467a4e16dfa" + }, + "partition_manifests": [ + { + "content_sha256": "8717b7ad91302eb9c3a6b85e26fba08008f038614191b4b6ce2ea92c08c67a7c", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "365643bd96302dccdd32c33a9413e53d0e28a2b909e638d36212a09cd0fd0eb1", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 2122465280, + "peak_rss_gib": 1.9766998291015625, + "quarantined_rows": 0, + "retained_bytes": 112665507, + "rows": 1000000, + "run": 1, + "snapshot_id": "sha256-acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_logical_sha256": "acb813354ce8c9dcc93a5bedc4f2bd67c41c3cc0c00fbdd63e4261fb322e7210", + "snapshot_manifest_sha256": "d30e299250afe543b8161864aa43ba96060ffe8c7096455781e45450be555fe8", + "stage_timings": { + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 9.520000094198622e-05 + }, + "_claim_database": { + "calls": 2, + "seconds": 4.887298399997235 + }, + "_claim_shard_manifests": { + "calls": 2, + "seconds": 1.1196237000003748 + }, + "_duplicate_event_ids": { + "calls": 1, + "seconds": 0.04429410000011558 + }, + "_export_claim_index": { + "calls": 1, + "seconds": 2.5049762000016926 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 4.754061100000399 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 0.3308364000004076 + }, + "load_normalized_snapshot_v3": { + "calls": 1, + "seconds": 8.287658799999917 + } + } + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 1.9766998291015625, + "median_events_per_second": 32426.45951364651, + "minimum_events_per_second": 32426.45951364651, + "retained_bytes": 112665507 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/performance/m7-data-profile-20k.json b/validation/performance/m7-data-profile-20k.json new file mode 100644 index 0000000..5bdb90d --- /dev/null +++ b/validation/performance/m7-data-profile-20k.json @@ -0,0 +1,1383 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", + "dirty": true + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "23.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.6.1" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "measurement_scope": "write_normalized_events end-to-end: validation, L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "rows_per_run": 20000, + "run_results": [ + { + "accepted_rows": 20000, + "claim_index": { + "claim_version": "3.0.0", + "format": "sharded-parquet-v1", + "rows": 20000, + "shards": [ + { + "logical_sha256": "ae95223f2155c6a957c63d69a041bb8715ac5450a907ad63dfcad3727da51921", + "rows": 66, + "shard": "00" + }, + { + "logical_sha256": "dafc603071483dcdd1c00dc70e6808aeca9a3ed41c675496d6bc6e4d4e761045", + "rows": 82, + "shard": "01" + }, + { + "logical_sha256": "2862bdd09732065ff141bd4f517047cee74a10c66025864323fc1957c8e7e286", + "rows": 83, + "shard": "02" + }, + { + "logical_sha256": "bed2b634b7dcd35f19416e2a4ded0ba368811b5dc087a88c30df741ae264259d", + "rows": 84, + "shard": "03" + }, + { + "logical_sha256": "22f9cfc9aa702e9df81cb45a14551950d84cf09a08c82ab2ee9513baba1e2ab6", + "rows": 79, + "shard": "04" + }, + { + "logical_sha256": "f12aea608b0770e99fa3fd4ba3e3971c8c5ba749d1e7fe81f849e7434aa516a2", + "rows": 65, + "shard": "05" + }, + { + "logical_sha256": "ebb60fddc0582d56f4ff05680cfaef8edd82bc9f073ca338ea7288cadb5662e5", + "rows": 79, + "shard": "06" + }, + { + "logical_sha256": "ca86568402b4385dcff4148b522da1ee7df9949f20ec1c74faa4727901f01a83", + "rows": 69, + "shard": "07" + }, + { + "logical_sha256": "964a6cc441fe4d34e790e43557b12c90da2ef9d7168944ca507b4492e35e9dcf", + "rows": 73, + "shard": "08" + }, + { + "logical_sha256": "2af1ab1b3beb4f2a22270d554d942eb7690a5099572d3288753566bf3c1db936", + "rows": 86, + "shard": "09" + }, + { + "logical_sha256": "38e686c6eb1900262b06ca8e82b73ed3f0216708d9768631856e6a5075effd39", + "rows": 67, + "shard": "0a" + }, + { + "logical_sha256": "4d0d12b44493b24242798e38866c259db68ab8afb8c4b071e3c714788de94afd", + "rows": 99, + "shard": "0b" + }, + { + "logical_sha256": "94881af579f3a8ee6f02a2ea4335b376f9fe3f25f95c9f0c558eb2c1477d1385", + "rows": 85, + "shard": "0c" + }, + { + "logical_sha256": "fb757fb5c90995557ced52b763c35671ad7e54e63e0b30421c6f7b71c9ac3ae6", + "rows": 72, + "shard": "0d" + }, + { + "logical_sha256": "326a3a094043c0ce2dc14be237f0a11bf9578cbe31f9967d91f89006d9966316", + "rows": 89, + "shard": "0e" + }, + { + "logical_sha256": "ce8d47393cd9b620cf1e244384cc762c60cf4c3f2882aa4c5d4da5ffed3eb0a0", + "rows": 81, + "shard": "0f" + }, + { + "logical_sha256": "7e268c0470abb427618e44f09676d9d688442b83f2a38493b35acc7e4eaf66dd", + "rows": 86, + "shard": "10" + }, + { + "logical_sha256": "22038b2c77ee0af3a9d096190a388893ebfef4ebd3420a3fa64077ee5c4af085", + "rows": 68, + "shard": "11" + }, + { + "logical_sha256": "46ee65cdae7867656ef0766f604d4245c749386f6ccdebbd677af6852b70331c", + "rows": 71, + "shard": "12" + }, + { + "logical_sha256": "ba38ef374989da3c240ad0d3ef1a8e8e17d3c1c7ba3fc5a734632570950e9ac5", + "rows": 82, + "shard": "13" + }, + { + "logical_sha256": "399c5181c0043fc1f6c1cf9e2b36dd037b6413ed4849ba60bffbcf34b0638c16", + "rows": 90, + "shard": "14" + }, + { + "logical_sha256": "171de364931682cf7c69859699dc16e8982702dbad010a2ff2baa8b60cd7199f", + "rows": 72, + "shard": "15" + }, + { + "logical_sha256": "80719938e8649e9d9c4fef72ecb62ab20a9391087f0824c8ccf9cd34fc2a0a8e", + "rows": 83, + "shard": "16" + }, + { + "logical_sha256": "0a9bf19f378290f24215b36a7fc0aed00e86971fefa0f907929dd2e3d2c497b1", + "rows": 73, + "shard": "17" + }, + { + "logical_sha256": "85797dd73e81b5b38d4381686f9efd7802366ec0d64c60f2bb20c45fb3bbd7ce", + "rows": 77, + "shard": "18" + }, + { + "logical_sha256": "5b5458fdd203b1fca21d1eef59689e4bd7e7bfa9e039ac856a685be736ce8108", + "rows": 79, + "shard": "19" + }, + { + "logical_sha256": "3d4a762db3c96e1ccf67a3851b6852dc84091d0cf1a885f179d9c461a8432e94", + "rows": 93, + "shard": "1a" + }, + { + "logical_sha256": "fe401f7bfec6e7925a2f08fa76aec633bb5fc63388c024d4ef59c22b3a00ebb0", + "rows": 77, + "shard": "1b" + }, + { + "logical_sha256": "d12d19f68de18938133105c4bd0c5d76509daebd60f515df97ebfd920f6de90f", + "rows": 76, + "shard": "1c" + }, + { + "logical_sha256": "664acfa06a13909ac451aea9f94b3f0924030d2f2956cfc9357b6acd5588430d", + "rows": 65, + "shard": "1d" + }, + { + "logical_sha256": "0c80bb9fc9262541b96b5d483e68e061f7d4aa4cbd9d4ef36d00d3cd010a60ca", + "rows": 68, + "shard": "1e" + }, + { + "logical_sha256": "9e0c3921221e7487864da898bcd11399045379f365deea73d8d27a42cdf49cd0", + "rows": 76, + "shard": "1f" + }, + { + "logical_sha256": "2784d06df00c933ea966968b49c6a96a3bd974211c34e907fe28cf1338b20203", + "rows": 80, + "shard": "20" + }, + { + "logical_sha256": "c75ec8fa3c17b36ce4a551708ea0fbc89a6a2a38ad5aa1ef274dc432492a4b21", + "rows": 62, + "shard": "21" + }, + { + "logical_sha256": "f5e0e7cba710f7991f9b10d1472ee26a17050dce2c97091d560c42a4512db00c", + "rows": 80, + "shard": "22" + }, + { + "logical_sha256": "fc0516ea63596eaeac827b33a377ff73e20e748613bd3dae26ad264d47ec321d", + "rows": 74, + "shard": "23" + }, + { + "logical_sha256": "3ab2648ee436cad9281d5c44ae434c72ebbec315ac1c95141e3ccc9090e0944a", + "rows": 74, + "shard": "24" + }, + { + "logical_sha256": "e6ce8de2c3d2d306fb5287b775b44bd552dd244171fff9e9cb48d4637cda0ab7", + "rows": 70, + "shard": "25" + }, + { + "logical_sha256": "88ddc14d45e79b881078db39e3764daa8ae036d3438e84811af8889f81ce5e27", + "rows": 102, + "shard": "26" + }, + { + "logical_sha256": "19ac3ab0cbe90c3ecb69d2376961aea5defd9351f6fb645dbbb34f1c14b37ac7", + "rows": 72, + "shard": "27" + }, + { + "logical_sha256": "b05217c19e56d6424a89c5b47b858c5274d972b710d39fb9430799633566db8d", + "rows": 79, + "shard": "28" + }, + { + "logical_sha256": "b2e3fcea03dbe9c1cd223a2de61181b8599ed3d288fad13d505e383044872250", + "rows": 64, + "shard": "29" + }, + { + "logical_sha256": "270da885b0815cd8c71c2ba4c41d2e2c68a909a73fbf97a898120fb64b96f62f", + "rows": 85, + "shard": "2a" + }, + { + "logical_sha256": "851c38367eaa2ec011e0d56ab29a2572660173abb6a7ed587ef6be9f7814195c", + "rows": 65, + "shard": "2b" + }, + { + "logical_sha256": "19068c0aa62a6c857f22f3958aa0669fec4c5ac5ce2489d637f12531e16d020d", + "rows": 101, + "shard": "2c" + }, + { + "logical_sha256": "a22841eabf7788e275fcc56f70990a1871ba561ea38275d94604983a996a0113", + "rows": 82, + "shard": "2d" + }, + { + "logical_sha256": "79a5a97abafe22e6ce9f865fdafb7626a8c471d5d19ee481105d2b422e312149", + "rows": 74, + "shard": "2e" + }, + { + "logical_sha256": "224cc37575876bb011939da24a939e362a0598f5b62b769418992147ef8ef33d", + "rows": 71, + "shard": "2f" + }, + { + "logical_sha256": "5977c751488c0f9257649cd069d408b5affa3557ddf279dacb1af22f43ee40f2", + "rows": 78, + "shard": "30" + }, + { + "logical_sha256": "d69f9c3af67873018272f851bf760f3879099e09fde572011814ab1722aff11c", + "rows": 99, + "shard": "31" + }, + { + "logical_sha256": "a5be0609cebff8ba6766f0fa4b23a5bd35719db8151fbcc2fcdc241a472c8efb", + "rows": 90, + "shard": "32" + }, + { + "logical_sha256": "574fe99d333a3eac143c7748590ff20e4d0dfa13aa57641e598e780759b36743", + "rows": 80, + "shard": "33" + }, + { + "logical_sha256": "79aa3ce6f8140491dc788a486820bbc0d9c86da95428d2839b9a19414ffca5ab", + "rows": 81, + "shard": "34" + }, + { + "logical_sha256": "1434fb7daf452bc12f963a0477e823a66354b8757f4860fa1cd457844cd13797", + "rows": 72, + "shard": "35" + }, + { + "logical_sha256": "3bccc0c1fc8396a029c4453e74c753b239d8a08596b1b22f324b31773166b891", + "rows": 80, + "shard": "36" + }, + { + "logical_sha256": "f8e2328668cca65c7851bae9a87026dd0a1148a5e5d33c2b4639383289db642c", + "rows": 95, + "shard": "37" + }, + { + "logical_sha256": "1d307c4dccd2a56b9d3507c1eea9a4dd037f8c672335d23a2d3bfc50f42bc1fe", + "rows": 80, + "shard": "38" + }, + { + "logical_sha256": "2adbe1caf9b6d44349cc12a026e91e8b46e2f42fdc55fd6cfc006252ab9b372f", + "rows": 95, + "shard": "39" + }, + { + "logical_sha256": "c42208b45cdeb27bc89543b3ca627e50bb5301c6540842dd5fe9d56ec3be4cc5", + "rows": 93, + "shard": "3a" + }, + { + "logical_sha256": "e07b28be7097301c4f377228eec84b6ff7eafffa7d926eec12ff23674dd5dc83", + "rows": 72, + "shard": "3b" + }, + { + "logical_sha256": "9b6a1799535423cb7433f1274db22afad8e01c97eb63e42543998b8f4fae47eb", + "rows": 70, + "shard": "3c" + }, + { + "logical_sha256": "6bf28c3c06b2edcc184fd6ca07534e635718d67396aa976b0c7ef0a4c63ecd69", + "rows": 85, + "shard": "3d" + }, + { + "logical_sha256": "2e666bf590917939943b0035451f74e6ad587c255be70cd11269003c5f85cac4", + "rows": 83, + "shard": "3e" + }, + { + "logical_sha256": "c07244e1c5b077a7f91ba31d5276b95aa5328cd8fe2634c563d6b22682973741", + "rows": 78, + "shard": "3f" + }, + { + "logical_sha256": "0eeb7c1a82778827b841c653eec73b2bcbf86eb24b488047adb250d25f0738ec", + "rows": 58, + "shard": "40" + }, + { + "logical_sha256": "8f6d47c2921a98e5bac8b1cb7df6b06637a52f83285712bcc1c71d03961753ef", + "rows": 86, + "shard": "41" + }, + { + "logical_sha256": "b3d12e17070c7531f015c96936ce75032457648b154ae4a78d18d7e7e3f28c22", + "rows": 76, + "shard": "42" + }, + { + "logical_sha256": "28162b65a4d25ed851a82f1c48902e9e2d924cf917728ed954a167059478fb23", + "rows": 84, + "shard": "43" + }, + { + "logical_sha256": "cd6484eaaa27a84c3eecaf897d2c8babc8842c024a3e0b6916c2dd310c830ecc", + "rows": 89, + "shard": "44" + }, + { + "logical_sha256": "4c3da94554eb61073f3cbd59b92ffdf7bdee97936edb8b83dedda08281d2c242", + "rows": 77, + "shard": "45" + }, + { + "logical_sha256": "f84e399085e7b29d11bac846c9d56d3ed6cfd23799c0ccf4822e2fb1c4a1a8c2", + "rows": 76, + "shard": "46" + }, + { + "logical_sha256": "826022f44e355fa1daedd19a059168c08aea0671463fda81ec5801294a7214ad", + "rows": 70, + "shard": "47" + }, + { + "logical_sha256": "64169f0daa4291b039af27d5a8d5cd664abd4f4491a8ff73d3914034d48a202f", + "rows": 87, + "shard": "48" + }, + { + "logical_sha256": "ee49774ae1254f846e5694de6af10f9f19236e44f548073cc1c18dbd6b16d529", + "rows": 75, + "shard": "49" + }, + { + "logical_sha256": "610c1efdc13c27cb2d26c5fd751292b779317b2ad160c13492daa577975ef5b3", + "rows": 55, + "shard": "4a" + }, + { + "logical_sha256": "120d03b21d22a0a542ad5c3edcaf569d8018af4d10729374944d03fd4d4c3d4d", + "rows": 85, + "shard": "4b" + }, + { + "logical_sha256": "eeb4b175e4eec3a25b678adf6a9089a06db63e0e40873743543cd23d0d04af21", + "rows": 82, + "shard": "4c" + }, + { + "logical_sha256": "4fa43a44f24d996c47ff5693876923482b34ede0c130d432593231c9446e32ed", + "rows": 72, + "shard": "4d" + }, + { + "logical_sha256": "89783fcd5bcd98f564a1df16702a02c0f343f27d5d7ffaaa044ff67b8493831a", + "rows": 73, + "shard": "4e" + }, + { + "logical_sha256": "af24ae837dd8da4151e86d84e50c09fe7c3cb58e73a3b609f6a83e46ae78995e", + "rows": 90, + "shard": "4f" + }, + { + "logical_sha256": "36a392fb4dbd161e562484716baf4774a111e6101ea56d012252f690b17474b4", + "rows": 61, + "shard": "50" + }, + { + "logical_sha256": "88ea200ba63a5da9af47fd0f6ef1e83fbae3fedee91833ba7c4241961ffe0da6", + "rows": 64, + "shard": "51" + }, + { + "logical_sha256": "01b20d21deb00c8666185ee6cc471dbbfa49fd41e6918825e92c6df12b847a52", + "rows": 76, + "shard": "52" + }, + { + "logical_sha256": "7f80d913655501573c2830031f62f9e91ab5ed215ddab9eb46653af35d568ce0", + "rows": 66, + "shard": "53" + }, + { + "logical_sha256": "c02fd58ce16e1a120806ea3559e231a52c4a9cca111bd019d737ebbafa90bef1", + "rows": 78, + "shard": "54" + }, + { + "logical_sha256": "ab1fa606f51f30b2d2fb4849a1eeb5eabbcd06ec78b1bfa060ca7f1b1805c389", + "rows": 71, + "shard": "55" + }, + { + "logical_sha256": "c0322015d7ecf4c7813cd6e261bdee05e612da6f298fdcc581a1f21e8b35b25a", + "rows": 60, + "shard": "56" + }, + { + "logical_sha256": "589333180f33b8704313c813b48687645bc5989adb454d02cbddf3a230600cad", + "rows": 81, + "shard": "57" + }, + { + "logical_sha256": "9e9026771867ad08de9424637e3a4778578449608d58d01b50149a2af120a6dc", + "rows": 78, + "shard": "58" + }, + { + "logical_sha256": "a411fd48031a97ffd7f222573a9c2b1e986d84771850f05310b138c751f6af54", + "rows": 79, + "shard": "59" + }, + { + "logical_sha256": "dd4071fb34784d0d38d8e05ebda33940a9cc7690c2e9ae058b5908efa3bda36f", + "rows": 79, + "shard": "5a" + }, + { + "logical_sha256": "72d254990237427727464ba8e7498e047efd7cb51c02444a0c3738355d9a20e7", + "rows": 73, + "shard": "5b" + }, + { + "logical_sha256": "6dfe8c5e329d1abea1f74277ec8627daaafdf5a369af8fef3a5bd928e0a48e23", + "rows": 75, + "shard": "5c" + }, + { + "logical_sha256": "3b0753fbe75be68bf72345b9d5971fbfb5c1ffdcf901acb03cebc29fbef9eae7", + "rows": 77, + "shard": "5d" + }, + { + "logical_sha256": "8fe040f3cb75fb71fb6635439df42a5b02f01c2b601bdc9c4bad27e64b88a75a", + "rows": 80, + "shard": "5e" + }, + { + "logical_sha256": "5bb4ab98dcee15b57ac7c96635cc35c4e0fbb5f1f74d7912b43018ab360abf4a", + "rows": 64, + "shard": "5f" + }, + { + "logical_sha256": "25dcf7601ce5276df819a9950e4ca2acbd76fb4bdb09f90b142fb3d3e8078710", + "rows": 88, + "shard": "60" + }, + { + "logical_sha256": "2e80c92926050ac02f3b2404d24d7b6e6dc718169d89078d12315b1c3490b52a", + "rows": 79, + "shard": "61" + }, + { + "logical_sha256": "76ba3dde6d26c84af5fe20b0e7e0c77fbc03f8061de7d5be3c40abfb853e4acb", + "rows": 64, + "shard": "62" + }, + { + "logical_sha256": "37743ee75bbf537a7c85b0615da4a95cec271320f5814c0132a8240b68bdd28b", + "rows": 87, + "shard": "63" + }, + { + "logical_sha256": "9f8bc29e53a1daa423eeeb4ca0c734c01849b3d075268f6327352553e8749526", + "rows": 84, + "shard": "64" + }, + { + "logical_sha256": "c3eb6025b709ecd18c7639bdc8eac58b5efb53d5145385200f3dabe9742a837a", + "rows": 86, + "shard": "65" + }, + { + "logical_sha256": "1f89e951e046f550801f7f371f61b82b6de50f7270d650157bfe030ed1506158", + "rows": 68, + "shard": "66" + }, + { + "logical_sha256": "f6c2a729fd4c3aa40ea4d37fbecd7b6cd343cb86ce5846f0769b9a4c085835f6", + "rows": 78, + "shard": "67" + }, + { + "logical_sha256": "06af9440be7bd3cf7d8e195ef86249565b2730e9779929dbd2b6e330a2afa466", + "rows": 68, + "shard": "68" + }, + { + "logical_sha256": "bb325b62d50c59a8b4ab7fc720d2c27618c1177590a5618e1dac98a9dcec756c", + "rows": 83, + "shard": "69" + }, + { + "logical_sha256": "cadf6e80ced96a5aa6d31b4562452a234c0e2953acd4fa7f7520152aa99467d1", + "rows": 97, + "shard": "6a" + }, + { + "logical_sha256": "103ef10349f3d0f77676a09f10b8d255617fb1dad6b5584176f342ee8616ad2b", + "rows": 74, + "shard": "6b" + }, + { + "logical_sha256": "dea511791d9ffe0eca0fe2ce6447851fdd96890870047a847156f8de20dc47c9", + "rows": 84, + "shard": "6c" + }, + { + "logical_sha256": "302351b33ad3a334143b417d8b7083c5af4058e470cc2c2ddb4f90cd9f6862e2", + "rows": 69, + "shard": "6d" + }, + { + "logical_sha256": "86d3f663bf2d9b451d54b5710bbb4677615a2e06d0c2ca58d1ad7fbcf4770058", + "rows": 98, + "shard": "6e" + }, + { + "logical_sha256": "2b9ec9fc72b4b78a958dfc91f5f12b73b09dc9e84ba60f559a71e739b2f2c5da", + "rows": 79, + "shard": "6f" + }, + { + "logical_sha256": "28bc9f963a3eac93d9b411fab137cf6d37199a16e4cda8484c2abb122f40d56f", + "rows": 75, + "shard": "70" + }, + { + "logical_sha256": "e9dc620990c96bb9fbf07a6a771eb09e59d29c7c66af993f423ee341c9d22659", + "rows": 87, + "shard": "71" + }, + { + "logical_sha256": "531baf6c544f3f8248fdf871dffa245135e628340fecb8a88c235bb38ade0075", + "rows": 73, + "shard": "72" + }, + { + "logical_sha256": "26b9e057326abe039d6d68c9e83bdc051e40fdc2928099d436a7707bcbb376d1", + "rows": 70, + "shard": "73" + }, + { + "logical_sha256": "80147e694bcb11281621c2052f53b0c1c807a9cfdebc477be60560973a1c7a02", + "rows": 67, + "shard": "74" + }, + { + "logical_sha256": "c616aa18055b7a1bb15ebc69062272084e1cbf0e8d7b76a49f70bccf108d2180", + "rows": 89, + "shard": "75" + }, + { + "logical_sha256": "43c91c2f12665acd6d2ba41e934d9b24cfece72b912d99b6b43a37b727cd8836", + "rows": 70, + "shard": "76" + }, + { + "logical_sha256": "0c24c8994fc7c8bdd7c1fe8c87eafb4bb14eb3cea6d8aa1e8635dfaded79b254", + "rows": 73, + "shard": "77" + }, + { + "logical_sha256": "99b10026c6c28fc7f0fd3fda5d79e216546f78b80ea12772b682608a14c8cd2a", + "rows": 81, + "shard": "78" + }, + { + "logical_sha256": "98c97c00bb82a381d34786bc5d21557fdbc0d560fe885397d9df1f613a679bf8", + "rows": 101, + "shard": "79" + }, + { + "logical_sha256": "9d30fb860d17a5ecf04f2994847724dabdb8edbb1797f6ff0af23e6ca1b10e5a", + "rows": 72, + "shard": "7a" + }, + { + "logical_sha256": "4895a6f10ed9554cf7031c43e3736890721f6c660f797ad7bae8ec520b598723", + "rows": 87, + "shard": "7b" + }, + { + "logical_sha256": "374722e01f56f41ed3b68fb02a91b92fe72a58f3ca3889edbd6379e70c276b06", + "rows": 76, + "shard": "7c" + }, + { + "logical_sha256": "5d979dbfefe9947c16d31d414e818df81853f2d761a0e0c72a42c357c843b9f1", + "rows": 73, + "shard": "7d" + }, + { + "logical_sha256": "06d9d35b86533ed4539eec9bd2d4a35ecb133e4060721e747a63c7c0820e6b2f", + "rows": 86, + "shard": "7e" + }, + { + "logical_sha256": "4fa5f2f4004fa566ed0240ab055eaab65f4bbc23ae1c9ad140405d2a248a05d7", + "rows": 69, + "shard": "7f" + }, + { + "logical_sha256": "2ed30263de31e02a020dc92bdcaad9fcedd30663ac403ae1ba2f3ddea13758e9", + "rows": 77, + "shard": "80" + }, + { + "logical_sha256": "5bae18dc05254ad3241e18ee738c09ec77884a78026d01c52477c9a783f60f8f", + "rows": 71, + "shard": "81" + }, + { + "logical_sha256": "12e57eaae6401406b1b61930e1820b77854b302c3ac187530ad9417e8e19e37b", + "rows": 93, + "shard": "82" + }, + { + "logical_sha256": "f1dc46f01a5569a2a2d416a6313811097aa7b5627fdbf4f5d5a0c06ba8421f4f", + "rows": 64, + "shard": "83" + }, + { + "logical_sha256": "fd88861ad02d59952113224a5bfdfec786f2e38158ee8f3ba7dcd9ca9d422d3f", + "rows": 79, + "shard": "84" + }, + { + "logical_sha256": "5a0bf880a2ba459d62283348e964a7ad9c9722c34dba1a3cf8c4dd74d6bfd5b7", + "rows": 76, + "shard": "85" + }, + { + "logical_sha256": "2e60b57ab35fe974d6d5734c53e1bba7f8911707fa1f5212a826144f1e348954", + "rows": 78, + "shard": "86" + }, + { + "logical_sha256": "f8d8117d86b0d20cbb33c30fad995b3c2bc9b5af9f7cbc8410b99746e10e2782", + "rows": 71, + "shard": "87" + }, + { + "logical_sha256": "007c3891742b714a2cd978c70647160eb7f8902733b3abab62a2a7dd747d207a", + "rows": 75, + "shard": "88" + }, + { + "logical_sha256": "46cf34c9f1789536ef1a7852a67019256ba21893187b3f1754ad3e368158ba52", + "rows": 68, + "shard": "89" + }, + { + "logical_sha256": "70c150f62153e1a3ceeac9ad088bce92f7e8c63af23ff35e74d9bb523eb6050f", + "rows": 63, + "shard": "8a" + }, + { + "logical_sha256": "1101a6c993233b8dec249ed2288d5d2fc99284d96d8ec1ac9e50e203ce06d7af", + "rows": 66, + "shard": "8b" + }, + { + "logical_sha256": "9ba1343b92cc3f8f6d879179884ccc2c251b686207a57fa3555609d4b3b2211e", + "rows": 66, + "shard": "8c" + }, + { + "logical_sha256": "69e830d9198372cc8a26bdab13b2ce09265cd580c4a71a5dbab5f9944bdcb748", + "rows": 72, + "shard": "8d" + }, + { + "logical_sha256": "7505ca2e5934e3fe66eb65ec67a5a0c895901a2674e7e120269e1fce58b37e30", + "rows": 72, + "shard": "8e" + }, + { + "logical_sha256": "4df5e55404049e7a7750792f675f05675e0e005aa4a874e5e317f7e31f1e1e24", + "rows": 74, + "shard": "8f" + }, + { + "logical_sha256": "25202da5d1993fb37e388f79c51118d1b0c24efec3bd6e620246572f39134671", + "rows": 75, + "shard": "90" + }, + { + "logical_sha256": "f48cd3b7af62a017415d08f3c6674c76513b7ae6467e2a94e02e91a6ed108b19", + "rows": 70, + "shard": "91" + }, + { + "logical_sha256": "2e3c46492d7e65351da1dedcc28106d746b539ba9c978a6ddf29f34230da6590", + "rows": 70, + "shard": "92" + }, + { + "logical_sha256": "c50caad0c48e6153b1232491f0d58a390a6eb4fbc40b10f2a0b2e6b4cdeb9fff", + "rows": 73, + "shard": "93" + }, + { + "logical_sha256": "0d311ff33be4db740b2afb43d1c9f0d118cf8f11b667a028d7432726dca3f68a", + "rows": 84, + "shard": "94" + }, + { + "logical_sha256": "a2848e8cd13fcba910894a13368d27c362c4203fb9364ea393f03b70e2e3f0cd", + "rows": 76, + "shard": "95" + }, + { + "logical_sha256": "2acdc9d3cc3cc471feeb216c2b89c6a829b30e7fca9ded61704630ec7500a7cd", + "rows": 79, + "shard": "96" + }, + { + "logical_sha256": "49917f7eccfea11a7a8a65298100dacccc7612b5fb09c568f38cc05fd128af95", + "rows": 97, + "shard": "97" + }, + { + "logical_sha256": "6325709494a5af54cf2b39e9589f92e70d86fa8471342100a780192ea735059e", + "rows": 84, + "shard": "98" + }, + { + "logical_sha256": "f137168da16e6481ff6884cb83214af532200f3289814d1c346e11c1ab3bf573", + "rows": 76, + "shard": "99" + }, + { + "logical_sha256": "2bbc3b6b4c05a6c99880d2c5fc0ba4237ad519baeffd254304834e9a505e432a", + "rows": 69, + "shard": "9a" + }, + { + "logical_sha256": "446ee72d27dbaa696418722c5cbe3b6f9d639d29b2f4594e0e3cd7196c72b058", + "rows": 83, + "shard": "9b" + }, + { + "logical_sha256": "2f8690c5be0e926cbe9ac10c343f092735b3a2b8feb2533cd05c0d092b9e3692", + "rows": 74, + "shard": "9c" + }, + { + "logical_sha256": "ff01f420085139c7fec314b79999d51fef148e5d0864a691d1b35f933c9f9b02", + "rows": 80, + "shard": "9d" + }, + { + "logical_sha256": "91b0c2b57982a17c2fccbfe3e8c4f1014b2b888aea20507ec0da90ec6e2a218b", + "rows": 69, + "shard": "9e" + }, + { + "logical_sha256": "d8493db226a6a9d2efefeed73e774884e2c9a2f6aff508ae94fd24b39806782e", + "rows": 77, + "shard": "9f" + }, + { + "logical_sha256": "8f60341026356f9591961b231b0608bf5e35b620e413b31fb67654febd5770b0", + "rows": 75, + "shard": "a0" + }, + { + "logical_sha256": "57ad1201911695171137a3d6f3749ccb069d384fde62855539de6e01ed46da5e", + "rows": 66, + "shard": "a1" + }, + { + "logical_sha256": "06bd6e2756e988c231b7fe7d2c141f3f38e319f50456c3352382b3db9f9b1c41", + "rows": 86, + "shard": "a2" + }, + { + "logical_sha256": "c7257f7f5241f4bd70ae404406f2cb27ed594e6e2fec8865def25289c4823386", + "rows": 78, + "shard": "a3" + }, + { + "logical_sha256": "be4e6ed602d12208ce909afd194637a437f4fd421b4d13b50e75999c7c9703dc", + "rows": 87, + "shard": "a4" + }, + { + "logical_sha256": "3339cad4c27d599404ed2fce6826a58783c952b6b6f9482c8c7b56d7f5c416c9", + "rows": 79, + "shard": "a5" + }, + { + "logical_sha256": "047fab40499ea0f14a34d78138b027b39837cb88b2d19e5c2844491feab58ac2", + "rows": 84, + "shard": "a6" + }, + { + "logical_sha256": "08d583576aa7a8524bf115c193153128f1e98ecf20ddd90cfeee8f7cfa88243f", + "rows": 79, + "shard": "a7" + }, + { + "logical_sha256": "5a86716d17e699f3e1d28e37817c45cb6bfa6c7f3c8c2c06737cb9b9b6306e62", + "rows": 83, + "shard": "a8" + }, + { + "logical_sha256": "432baf7561183f1cbea3932db5f6ea080f1b8c8fa4fd2142c0a8c2eee583cbc3", + "rows": 90, + "shard": "a9" + }, + { + "logical_sha256": "38060feace59c67daaffc05a319fb13e3b3ca517770e6cd93918877fc1a9ce2f", + "rows": 65, + "shard": "aa" + }, + { + "logical_sha256": "035863e39310b8e97256120b65bbec035694a85d82cbe12c7d6b8938a9fe290f", + "rows": 76, + "shard": "ab" + }, + { + "logical_sha256": "af010c92f43f189e453d79f79dd92da9d3804e0fec12e534e2c30233eaf01bbc", + "rows": 80, + "shard": "ac" + }, + { + "logical_sha256": "852b4bbfb5ae07541e7962e82036186aace92b321c42aa57e9744cb2bfe629ea", + "rows": 92, + "shard": "ad" + }, + { + "logical_sha256": "4415de889b5fa589945daa8c9170d0607adcafe22178f7bab03029ef9fdd7474", + "rows": 75, + "shard": "ae" + }, + { + "logical_sha256": "d536fea029b8d9e8119ae7ca25322a843e30e0110c66042c12af85d6b0d4d502", + "rows": 76, + "shard": "af" + }, + { + "logical_sha256": "c889795d5071616c26ba0c170eb942a8482bd098403538a73b9116b2facac117", + "rows": 87, + "shard": "b0" + }, + { + "logical_sha256": "a03f3406a7726cf2f0569eb2507a81d4a736c99757460d7020f117c8d30b88aa", + "rows": 90, + "shard": "b1" + }, + { + "logical_sha256": "601d0450fd0ed3e8f7d0e163753bb5db9d32acdabdc8136e3a568e21c3904b49", + "rows": 73, + "shard": "b2" + }, + { + "logical_sha256": "6b13369d5f0e4436fe38519aab22a6182852c1cf2264009d2088de71b27b9aba", + "rows": 85, + "shard": "b3" + }, + { + "logical_sha256": "57b78332e0be10e2b1e8e494b527d8d5a6c2a5a9defefe7d3cdd3687f6f9dbf5", + "rows": 89, + "shard": "b4" + }, + { + "logical_sha256": "61c37054a52f3ef40be832830f9b91d76c5834643d36be7214a9f318a5e75187", + "rows": 65, + "shard": "b5" + }, + { + "logical_sha256": "7c80541ab3ff9d5680974a7489ae106cb33ef831c6c46257cf353bc753f01836", + "rows": 86, + "shard": "b6" + }, + { + "logical_sha256": "25e7ffb7689f5418b24bb88b7b7bbfbd1d6d42c194d6cc22f475739c0cbbf39c", + "rows": 75, + "shard": "b7" + }, + { + "logical_sha256": "dde592dd398ffae70351278cbc03d543113fd6a04a26d842db8e7015e7b074e5", + "rows": 75, + "shard": "b8" + }, + { + "logical_sha256": "3930680265b1b87525f7dd4581109710da6aec13346b0ad27229164ee5b32994", + "rows": 87, + "shard": "b9" + }, + { + "logical_sha256": "ed9230d9f6251c562f179a0828026fd112f452c22041ee8d74a58cfe330dd997", + "rows": 65, + "shard": "ba" + }, + { + "logical_sha256": "54fcb72eba9f81e4d7dcffd29469433845d35749f8465962342266c994bf6e7a", + "rows": 77, + "shard": "bb" + }, + { + "logical_sha256": "c97d180b09cba360a76343db2e5abd1cd52e59b12017a5e9ed2784894e12b94e", + "rows": 83, + "shard": "bc" + }, + { + "logical_sha256": "a84f46fe6c688ca05dc0b6f830b92451acd832beabaf3e9716ad9faf4b58ade5", + "rows": 62, + "shard": "bd" + }, + { + "logical_sha256": "20d74658d48d399be4ee241ce996bdf7e3e5e2d4a9e0a0ccea4b5bef3d05e404", + "rows": 80, + "shard": "be" + }, + { + "logical_sha256": "64214689d9fcf193bcaf6ebb7c987b700828cbb7eb65aac5b37207f0fb00d087", + "rows": 77, + "shard": "bf" + }, + { + "logical_sha256": "709c7e607c3c920bd13b8e5adeaff4aff47738fce43c134eaf0472966a3bc22f", + "rows": 95, + "shard": "c0" + }, + { + "logical_sha256": "a2fba56ce400b364cabe0230700ccc7435f6eb2361a2ecd2f0be7efe793c67bb", + "rows": 79, + "shard": "c1" + }, + { + "logical_sha256": "f6146770c1fcf0855f73ee5321f66d07bf176aca5b94bb73d93716725f2b445f", + "rows": 81, + "shard": "c2" + }, + { + "logical_sha256": "3c0af25ff25bf4de3806126273ae04c124c2aa894a078e8043f054abd56e0347", + "rows": 73, + "shard": "c3" + }, + { + "logical_sha256": "3f1792c6a5c11fd2ff52b632737f41f5f33e89223bb871134ac6c28b6db20a90", + "rows": 95, + "shard": "c4" + }, + { + "logical_sha256": "c5549452d960dc6a811ca4ff6fb562f2aa0f075b1a7a7bade0b6de479e8942c2", + "rows": 94, + "shard": "c5" + }, + { + "logical_sha256": "e2233cd61e5b2c52a125784ab5b820430fa9dce252a6c82df827225e7334c4c6", + "rows": 83, + "shard": "c6" + }, + { + "logical_sha256": "bd0512394ecad73c3affe4aa7c0b56efdb68411c00ef5ba3ea1613fb984c14cb", + "rows": 73, + "shard": "c7" + }, + { + "logical_sha256": "af101330de0f147bbf6c8c59847fd5efc753606ad116d067a1318ff2fa0e7773", + "rows": 78, + "shard": "c8" + }, + { + "logical_sha256": "9bb1ed36b6366f77b971f688322e01d3bbd520b930cdad777fa5715115df0d2f", + "rows": 79, + "shard": "c9" + }, + { + "logical_sha256": "2cf02b3c22dd13ac93e1914a098c9fc7282a819fe470ebe0ac1495f7506b4b0e", + "rows": 83, + "shard": "ca" + }, + { + "logical_sha256": "9a1d7b4a660be86c81131c3cab2efae85e132ad39a956976eacc1e615c4b18bd", + "rows": 73, + "shard": "cb" + }, + { + "logical_sha256": "52c6f667b75379e9f35b5c00658c3b99d645db008dd2e18d7943aa764c69d166", + "rows": 77, + "shard": "cc" + }, + { + "logical_sha256": "ad7b30a5a39d0f1c0fe3ee0a11e981ae391f314192642d8e5b37eca375d3bdb0", + "rows": 90, + "shard": "cd" + }, + { + "logical_sha256": "da846ab3373e8291c9abdca1fb8c9f9b075f680ab0db26a969d8eee49f7f4197", + "rows": 87, + "shard": "ce" + }, + { + "logical_sha256": "daae38912d581969247b1a1dd5740dd2680080aa0c49418d1eeb332e95dbff54", + "rows": 86, + "shard": "cf" + }, + { + "logical_sha256": "a2b2c601458470e123dcd9a788c3bb7c7736ad567e745ab6edf9ead92c791d98", + "rows": 73, + "shard": "d0" + }, + { + "logical_sha256": "de5a5b53f695dcc087a54946dd556cd81a9003794edeee231f32643e4228480e", + "rows": 70, + "shard": "d1" + }, + { + "logical_sha256": "70ba444550fce465148194203fa9d97b7e65f5ada5a97e21677143ee5c1ee062", + "rows": 85, + "shard": "d2" + }, + { + "logical_sha256": "b3afd60915fd9d2586560d0229263517540b8a7bd01b7745a1bf201cf2444435", + "rows": 81, + "shard": "d3" + }, + { + "logical_sha256": "1c23cc86d25201a2e836bc0411bc6f8fab620bbe64a3a9bb8fe9d0c26a25b60f", + "rows": 78, + "shard": "d4" + }, + { + "logical_sha256": "462aba2b51470ac500c858c45778377a24a236162908ceb0dcb79ea3e2bb7b09", + "rows": 81, + "shard": "d5" + }, + { + "logical_sha256": "e50eeadc298a1590958a8fcd528e1581aff19f9182c9778c3d426bda08f430f5", + "rows": 85, + "shard": "d6" + }, + { + "logical_sha256": "9d8477daa426e24e756948928eb91ae78f26e48bedb8cd258c6fb6bc7e03fea2", + "rows": 77, + "shard": "d7" + }, + { + "logical_sha256": "3e673a75431817b45b68505bb118793d6a56e1b6e51d4f2b6c00db67a840a7de", + "rows": 69, + "shard": "d8" + }, + { + "logical_sha256": "23c9ff2df083e83a7e8b1ca714bfe991b589f2673ea5ec33aece1ef2bc4be705", + "rows": 66, + "shard": "d9" + }, + { + "logical_sha256": "c9d69f39c6efa51aeb333b6f5ad92fa6025afae1a91aa4d6aa1421311fc2cc1c", + "rows": 84, + "shard": "da" + }, + { + "logical_sha256": "03a6a79c6adb7d5b0ece4548637f477c0e0ba88cfab247e16775e656604a6158", + "rows": 59, + "shard": "db" + }, + { + "logical_sha256": "8289086672bd815aca962de01711c782a58d23c8fea0cf214f6f87b016ae94d4", + "rows": 70, + "shard": "dc" + }, + { + "logical_sha256": "0374a5b35eb6a1846ba86b0b0edae41593743823b32aeafd1d75eb17cdcf2fbc", + "rows": 76, + "shard": "dd" + }, + { + "logical_sha256": "78ad517ba5170f32a5455c4db3a15955946a09226bc4d9e92eff944a65516ca3", + "rows": 85, + "shard": "de" + }, + { + "logical_sha256": "2b5e90da92ff58a69d5ece70795ca6569857690e33b321cb0980201aee0673c1", + "rows": 77, + "shard": "df" + }, + { + "logical_sha256": "6b7c92a64a4bfd5f7c09f1b97d5ed6af520439216cc6cdaebca4306683c39f2a", + "rows": 83, + "shard": "e0" + }, + { + "logical_sha256": "2427b79a942ea9fc56471dbb32da373e7ae7c2e5d5a42385174c3985fdb879ad", + "rows": 74, + "shard": "e1" + }, + { + "logical_sha256": "661160ee958c500433fddd853c48977733126e6b5dfc6fc74378e8b3fdda396b", + "rows": 62, + "shard": "e2" + }, + { + "logical_sha256": "0d9000e062cfca09e99703c53e6988757b1a8da9cfa3c115c24912abb1d5da6b", + "rows": 53, + "shard": "e3" + }, + { + "logical_sha256": "e73590299b042344b96466687e24f9cf011525f2e0468e0f1a6facf45daae518", + "rows": 70, + "shard": "e4" + }, + { + "logical_sha256": "65f3e8eb934ec9c9a612c0a265b47a55af3ddedbc3785b431077e53f1865f993", + "rows": 79, + "shard": "e5" + }, + { + "logical_sha256": "95b6cd751f2de683bb5c2594722f585a3c8c2e7b3e3eff94702d23e88fc68c77", + "rows": 84, + "shard": "e6" + }, + { + "logical_sha256": "0c2e9dcccc68ef17da4c262d6873eabc4526ecb316d75cf3c5ee882ac2e30d6f", + "rows": 76, + "shard": "e7" + }, + { + "logical_sha256": "329977234547af8f899f06b12386d71f642f5b238629617f4a07907bc27b8c38", + "rows": 80, + "shard": "e8" + }, + { + "logical_sha256": "44cfb22c72f1cc9d811c2f7ac3048221bb636027a2762ed5330ab3e59c3207b6", + "rows": 84, + "shard": "e9" + }, + { + "logical_sha256": "6995a4cf242fda531d182ce162995856047c605926a642a8433a188886cdc3ee", + "rows": 76, + "shard": "ea" + }, + { + "logical_sha256": "4c00f1f29f91def003a4cf5d2953df840a3589244e2a8e3b1577faacd5b18645", + "rows": 90, + "shard": "eb" + }, + { + "logical_sha256": "b6dcb5f6ee809faff49efd304c6806d6ea7758f3b01e47b139e21b4f23f04d66", + "rows": 84, + "shard": "ec" + }, + { + "logical_sha256": "0924185069cfc0ea328c1de6c7501734d6a4c018337733ce0dacd56aa01f0fe5", + "rows": 92, + "shard": "ed" + }, + { + "logical_sha256": "39aa30af14012b7cd4c327c423c04e63fd2d2b96534d4215b9fbdef14e320b40", + "rows": 88, + "shard": "ee" + }, + { + "logical_sha256": "130a0a62870d8e8c2f304be124c297452b34684d2919fcd9e9f72f0baed33742", + "rows": 80, + "shard": "ef" + }, + { + "logical_sha256": "88f821b8fc3e0cc2ea34dc167178a5280122fddee9665c681f32a5494362cfce", + "rows": 80, + "shard": "f0" + }, + { + "logical_sha256": "2233e69568be6d64dcb813add600a07b8c5d02bbeb31f5bf43a69860c0a3c416", + "rows": 82, + "shard": "f1" + }, + { + "logical_sha256": "c7bb69b5f31f49ca424155a0358b79d00350796a260de3801b1c21863a7ed054", + "rows": 84, + "shard": "f2" + }, + { + "logical_sha256": "56da6d5c547c20139a069ec92fd0869e5fadb7a2c1031457ae3790f1cd7e76ca", + "rows": 91, + "shard": "f3" + }, + { + "logical_sha256": "39412314a2495586f625af3624f37b4ccefe6e41ed96667816c887f40b947779", + "rows": 76, + "shard": "f4" + }, + { + "logical_sha256": "e3e1a15cb8a99ad0dcec2f4e2adb94aceddc29b9c1653ac817b54cd5748a5407", + "rows": 69, + "shard": "f5" + }, + { + "logical_sha256": "bb97d692d642a933e381b30c90a6b5f2cbe4ae406a7fc39878ae0af469db42ef", + "rows": 79, + "shard": "f6" + }, + { + "logical_sha256": "0d750de287a82545c0f774f0f75f26aec4ce1086305e5440073c19ea52254b65", + "rows": 95, + "shard": "f7" + }, + { + "logical_sha256": "30b686e1072dc1898d51b42256f2e3ddb09c10ba4da452540b57697fb9c0bb43", + "rows": 80, + "shard": "f8" + }, + { + "logical_sha256": "65a17b679a2e504407dcaac4b2baf9674332a0ebdd6e3f337779a43b5039ef94", + "rows": 74, + "shard": "f9" + }, + { + "logical_sha256": "a495794af5e199c6c3ce112049b0bec12dae9f672c317dfeac12b94c3da8a721", + "rows": 87, + "shard": "fa" + }, + { + "logical_sha256": "fca69b9acb23fad1e742acdac697f1d15334a9130cfd13cb664806de295464f8", + "rows": 68, + "shard": "fb" + }, + { + "logical_sha256": "4ec7528d4074bbc66091291d1647820c35e69724efc3e1dd3338ba4008213655", + "rows": 82, + "shard": "fc" + }, + { + "logical_sha256": "1c3055878eef4c94fe2dc28e55b37f1cc596b027ff75896ca6fcf9fc40f5d926", + "rows": 76, + "shard": "fd" + }, + { + "logical_sha256": "d01f10ecf76e0bbc3fe2128bbd21c21c5bb48c6835689b425248c1782c2cfcb8", + "rows": 74, + "shard": "fe" + }, + { + "logical_sha256": "bed20be4dcadc7fb5eb08ac79acc951d429643290de4de176e18ea6161da5673", + "rows": 85, + "shard": "ff" + } + ] + }, + "elapsed_seconds": 7.988128400000278, + "events_per_second": 2503.715388450604, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 20000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "1b002fb7ca0b77d1c3c9cf51963afd22d9ada082e344cf5843895fcae202058e" + }, + "partition_manifests": [ + { + "content_sha256": "f59afd990b70f6fafbf23a4084ae711da82469532b2590497b4f337a4d92e32d", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "a6c683e1ffa663a17b6ac9f8248f2c84796974e7bcbd642f2ecec1c5daaad49d", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 19999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "2660c39d2ea03a9221d2f19dc956f65c32b4e77dbdd3dfc6574c18dcd9e91016", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "92b49432a855331ebb7ca2e78fc2df6d4f3c962c2ebc7b069e6703facb168c16", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 252313600, + "peak_rss_gib": 0.2349853515625, + "quarantined_rows": 0, + "retained_bytes": 2833046, + "rows": 20000, + "run": 1, + "snapshot_id": "sha256-3d604b2e12afd0987d0fbde9bd23a1d0c1aaafd777b9421ffabaedfc6ee6a753", + "snapshot_logical_sha256": "3d604b2e12afd0987d0fbde9bd23a1d0c1aaafd777b9421ffabaedfc6ee6a753", + "snapshot_manifest_sha256": "b7ff54019e137320c4016807d44513269aca9ac47685a30dd345cc15448476d8" + } + ], + "runs": 1, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 0.2349853515625, + "median_events_per_second": 2503.715388450604, + "minimum_events_per_second": 2503.715388450604, + "retained_bytes": 2833046 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 0.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} From 009a36162a2ec1a48fc4f96b93b2e675196e9263 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sat, 29 Aug 2026 20:03:51 +0800 Subject: [PATCH 02/16] fix: support benchmark imports on Python 3.10 --- tools/benchmark_normalized_l2.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/benchmark_normalized_l2.py b/tools/benchmark_normalized_l2.py index 5568c61..89b68b6 100644 --- a/tools/benchmark_normalized_l2.py +++ b/tools/benchmark_normalized_l2.py @@ -21,11 +21,12 @@ from functools import wraps from importlib.metadata import version from pathlib import Path -from typing import Any, Self +from typing import Any import psutil import pyarrow as pa import pyarrow.compute as pc +from typing_extensions import Self from quant_data_kit import normalized_v3 from quant_data_kit.data_lake import ( From bb796ad49f5c69e9b31d1813d9ca12641755f876 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sat, 29 Aug 2026 20:25:43 +0800 Subject: [PATCH 03/16] docs: record clean M7 data certification --- docs/m7-data-performance.md | 16 ++- validation/performance/m7-command-results.md | 92 ++++++++++++ .../m7-data-arrow-10m-final-okx-contract.json | 132 +++++++++--------- 3 files changed, 170 insertions(+), 70 deletions(-) create mode 100644 validation/performance/m7-command-results.md diff --git a/docs/m7-data-performance.md b/docs/m7-data-performance.md index a6a7d94..04f713a 100644 --- a/docs/m7-data-performance.md +++ b/docs/m7-data-performance.md @@ -75,11 +75,11 @@ setup is excluded; RecordBatch generation and the complete normalized write are inside the timed scope. ```powershell -$env:TEMP = 'H:\PureSaber-M7\temp' -$env:TMP = 'H:\PureSaber-M7\temp' +$env:TEMP = 'F:\puresaber-m7-temp' +$env:TMP = 'F:\puresaber-m7-temp' python tools/benchmark_normalized_l2.py ` - --work-root H:\PureSaber-M7\quant-data-kit-10m ` - --output validation/performance/m7-data-arrow-10m-final.json ` + --work-root .m7\quant-data-kit-10m-final-clean2-009a361 ` + --output validation/performance/m7-data-arrow-10m-final-okx-contract.json ` --rows 10000000 --runs 3 --batch-rows 262144 ` --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 ``` @@ -89,3 +89,11 @@ timed scope, three run results, deterministic artifact fields, C/H/F disk space, actual temporary directory, and whether generated synthetic data was removed. The formal run retains all three lake directories under the recorded H-drive work root; cleanup is a separate, explicit operator decision after evidence review. + +The final clean run used commit`009a36162a2ec1a48fc4f96b93b2e675196e9263`with +`dirty=false`. Its three throughputs were155,932.27、155,071.20 and153,097.30events/s; +maximum peak RSS was2.967GiB. All30,000,000 rows were accepted, no row was quarantined, +strict reload passed, and snapshot/partition/claim/L2-checkpoint hashes were identical across +fresh processes. The three retained runs contain3,310,487,778bytes. `TEMP`, `TMP`, and Python's +actual `tempfile.gettempdir()` all resolved to`F:\puresaber-m7-temp`; C was not the temp volume. +The report SHA-256 is`69416eeba389ff520043c9382ed7e1ff7380f4d5937030a02cb84cb1ab80c08f`. diff --git a/validation/performance/m7-command-results.md b/validation/performance/m7-command-results.md new file mode 100644 index 0000000..2845f7d --- /dev/null +++ b/validation/performance/m7-command-results.md @@ -0,0 +1,92 @@ +# M7 data certification handoff + +## Scope and acceptance + +Scope is limited to `quant-data-kit`: schema-exact Arrow batch normalization, PIT/sequence/L2 +validation, Parquet partitions, lake-wide event claims, immutable publish/recovery, strict reload, +current OKX sequence semantics and the data performance gate. It does not implement or claim a +real network collector or30-day market-data certification. + +Acceptance requires three independent10-million-row processes from one clean final commit; every +run must reach at least100,000events/second, remain below16GiB peak RSS, accept all valid rows, +produce deterministic artifacts, pass strict reload, retain its data and avoid the nearly full C +volume for temporary files. + +## Modified files + +- Core:`src/quant_data_kit/normalized_v3.py`, `data_lake.py`, `l2_replay.py`, + `adapters_v2/base.py`, `adapters_v2/okx.py`, `__init__.py`, `_version.py`. +- Build/governance:`pyproject.toml`, `requirements.lock`, `.gitignore`, `.gitattributes`. +- Tests:`tests/test_normalized_v3.py`, `test_normalized_v3_failures.py`, + `test_integrity_branch_gates.py`, `test_l2_replay.py`, `test_adapters_v2.py`, + `test_benchmark_normalized_l2.py`, `test_m2_integration.py`, + `test_m2_process_integrity.py`, and `tests/fixtures/providers/index.json`. +- Tools/docs:`tools/check_branch_coverage.py`, `tools/benchmark_normalized_l2.py`, `README.md`, + `docs/m7-data-performance.md`, this handoff and the final JSON report. + +Historical v2 snapshots and existing evidence were not rewritten. Rollback is a Git revert to the +v0.6.1 default-branch implementation; no old tag is moved or rebuilt. + +## Tests, CI and performance evidence + +```text +python -m pip check +python -m ruff check src tests tools +python -m ruff format --check src tests tools +coverage run --branch -m pytest -q +coverage json -o coverage.json +python tools/check_branch_coverage.py coverage.json +python -m pip wheel . --no-deps --no-build-isolation +``` + +- Ruff and `pip check`:PASS. +- Full suite:263 passed,1 skipped; skip is the declared Windows/POSIX symbolic-link case. +- Total source branch coverage:83.98%. +- Pure branch coverage:`normalized_v3.py`90.45%, `data_lake.py`90.32%, + `l2_replay.py`95.83%; every configured core module≥90%. +- Wheel/runtime/import metadata all report`quant-data-kit 0.6.1`. +- GitHub Actions run`33251583464`:Python3.10/3.11/3.12 all SUCCESS. + +Formal source commit:`009a36162a2ec1a48fc4f96b93b2e675196e9263`. + +```text +TEMP=F:\puresaber-m7-temp +TMP=F:\puresaber-m7-temp +python tools/benchmark_normalized_l2.py \ + --work-root .m7\quant-data-kit-10m-final-clean2-009a361 \ + --output validation\performance\m7-data-arrow-10m-final-okx-contract.json \ + --rows 10000000 --runs 3 --batch-rows 262144 \ + --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 +``` + +| Run | Events/s | Peak RSS | Accepted/quarantined | Strict reload | +|---:|---:|---:|---:|---| +| 1 | 155,932.27 | 2.943GiB | 10,000,000/0 | PASS | +| 2 | 155,071.20 | 2.949GiB | 10,000,000/0 | PASS | +| 3 | 153,097.30 | 2.967GiB | 10,000,000/0 | PASS | + +- All per-run throughput and memory gates:PASS; median155,071.20events/second. +- Git identity:`009a361...`, `dirty=false`; repetitions are independent processes. +- Snapshot logical SHA-256:`bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f`. +- Snapshot manifest SHA-256:`16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4`. +- Final L2 checkpoint SHA-256:`3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c`. +- Report SHA-256:`69416eeba389ff520043c9382ed7e1ff7380f4d5937030a02cb84cb1ab80c08f`. +- Retained data:3,310,487,778bytes under the recorded H-drive work root; cleanup=false. +- `TEMP`, `TMP`, and actual`tempfile.gettempdir()` all equal`F:\puresaber-m7-temp`. + +## Remaining risks and dependencies + +- The benchmark is schema-exact synthetic Binance-style L2:one snapshot plus sequential upserts. + It certifies the normalization implementation, not real exchange data or all market regimes. +- Real Binance/OKX TLS collectors, snapshot bridging, reconnect/resync, eight target streams, + continuous30-day evidence and archive/restore are the next serial task. +- OKX`checksum=0`is not an integrity signal. Non-zero CRC32 remains a labelled legacy fixture only; + current admission relies on`seqId/prevSeqId`, handles equal-sequence empty heartbeats outside + normalized deltas, and requires a fresh snapshot after maintenance reset. +- H contains multiple retained10M calibration/formal data sets. No automatic deletion occurred; + cleanup requires a separate exact-target review and is not authorized by this handoff. +- PR#6 must remain open until independent read-only validation and cross-repository certification + accept this evidence. No merge or tag is authorized here. + +- PR:[PureSaber/quant-data-kit#6](https://github.com/PureSaber/quant-data-kit/pull/6). +- Final JSON:`validation/performance/m7-data-arrow-10m-final-okx-contract.json`. diff --git a/validation/performance/m7-data-arrow-10m-final-okx-contract.json b/validation/performance/m7-data-arrow-10m-final-okx-contract.json index ff49b87..43011e0 100644 --- a/validation/performance/m7-data-arrow-10m-final-okx-contract.json +++ b/validation/performance/m7-data-arrow-10m-final-okx-contract.json @@ -4,8 +4,8 @@ "duckdb": "1.5.5", "git": { "branch": "codex/cross-asset-v2-m7-data-performance", - "commit": "edf1351690dc60691cc6330390adcdbf8bc79c5f", - "dirty": true + "commit": "009a36162a2ec1a48fc4f96b93b2e675196e9263", + "dirty": false }, "jsonschema_rs": "0.52.0", "logical_cpu_count": 16, @@ -16,9 +16,9 @@ "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", "quant_data_kit": "0.6.1", "temp_environment": { - "TEMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract", - "TMP": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract", - "tempfile_gettempdir": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\temp-10m-final-okx-contract" + "TEMP": "F:\\puresaber-m7-temp", + "TMP": "F:\\puresaber-m7-temp", + "tempfile_gettempdir": "F:\\puresaber-m7-temp" } }, "execution": { @@ -30,40 +30,40 @@ }, "disk_usage_after": { "C:\\": { - "free_bytes": 6914097152, + "free_bytes": 6913232896, "total_bytes": 321320923136, - "used_bytes": 314406825984 + "used_bytes": 314407690240 }, "F:\\": { - "free_bytes": 308037836800, + "free_bytes": 303531569152, "total_bytes": 594535321600, - "used_bytes": 286497484800 + "used_bytes": 291003752448 }, "H:\\": { - "free_bytes": 241740365824, + "free_bytes": 232390111232, "total_bytes": 998553677824, - "used_bytes": 756813312000 + "used_bytes": 766163566592 } }, "disk_usage_before": { "C:\\": { - "free_bytes": 6942900224, + "free_bytes": 6916562944, "total_bytes": 321320923136, - "used_bytes": 314378022912 + "used_bytes": 314404360192 }, "F:\\": { - "free_bytes": 308037836800, + "free_bytes": 303531700224, "total_bytes": 594535321600, - "used_bytes": 286497484800 + "used_bytes": 291003621376 }, "H:\\": { - "free_bytes": 245054144512, + "free_bytes": 235700928512, "total_bytes": 998553677824, - "used_bytes": 753499533312 + "used_bytes": 762852749312 } }, "independent_processes": true, - "work_root": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\quant-data-kit-10m-final-okx-contract" + "work_root": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\quant-data-kit-10m-final-clean2-009a361" }, "fixture": "one valid snapshot followed by same-book sequential upsert deltas", "gates": { @@ -167,8 +167,8 @@ } ] }, - "elapsed_seconds": 56.78307909999785, - "events_per_second": 176108.80139820348, + "elapsed_seconds": 64.1304080000009, + "events_per_second": 155932.26851137233, "final_l2_checkpoint": { "instrument_id": "BTC-USDT-SPOT", "sequence": 10000000, @@ -202,8 +202,8 @@ "venue": "BINANCE" } ], - "peak_rss_bytes": 3161690112, - "peak_rss_gib": 2.9445533752441406, + "peak_rss_bytes": 3159621632, + "peak_rss_gib": 2.942626953125, "quarantined_rows": 0, "retained_bytes": 1103495926, "rows": 10000000, @@ -222,7 +222,7 @@ }, "_OpenPartition.flush": { "calls": 4, - "seconds": 5.800004146294668e-06 + "seconds": 6.000002031214535e-06 }, "_arrow_ready_rows": { "calls": 0, @@ -230,23 +230,23 @@ }, "_assert_lake_wide_claims": { "calls": 1, - "seconds": 6.749999738531187e-05 + "seconds": 8.499999967170879e-05 }, "_build_claim_index_files": { "calls": 1, - "seconds": 16.750588699997024 + "seconds": 19.846420699999726 }, "_claim_database": { "calls": 1, - "seconds": 24.089754900000116 + "seconds": 26.618977499998437 }, "_claim_shard_manifests": { "calls": 1, - "seconds": 1.1966786999983015 + "seconds": 1.3676076000010653 }, "_claim_shard_manifests_from_paths": { "calls": 4, - "seconds": 3.7652362000007997 + "seconds": 4.821134300000267 }, "_duplicate_event_ids": { "calls": 0, @@ -258,23 +258,23 @@ }, "_logical_rows": { "calls": 1, - "seconds": 6.799999755457975e-05 + "seconds": 8.179999713320285e-05 }, "_partition_manifests": { "calls": 1, - "seconds": 1.7077691000013147 + "seconds": 1.5643729999974312 }, "_publish_or_validate_claim_index": { "calls": 1, - "seconds": 1.5886443999988842 + "seconds": 1.9434428999993543 }, "_write_claim_index_manifest": { "calls": 1, - "seconds": 0.6604442000025301 + "seconds": 0.7611584000005678 }, "load_normalized_snapshot_v3": { "calls": 2, - "seconds": 30.2918374999972 + "seconds": 33.89361949999875 } }, "strict_reload_verified": true @@ -368,8 +368,8 @@ } ] }, - "elapsed_seconds": 57.27277210000102, - "events_per_second": 174603.03794165084, + "elapsed_seconds": 64.48650819999966, + "events_per_second": 155071.19673755343, "final_l2_checkpoint": { "instrument_id": "BTC-USDT-SPOT", "sequence": 10000000, @@ -403,8 +403,8 @@ "venue": "BINANCE" } ], - "peak_rss_bytes": 3168739328, - "peak_rss_gib": 2.9511184692382812, + "peak_rss_bytes": 3165978624, + "peak_rss_gib": 2.94854736328125, "quarantined_rows": 0, "retained_bytes": 1103495926, "rows": 10000000, @@ -423,7 +423,7 @@ }, "_OpenPartition.flush": { "calls": 4, - "seconds": 5.100002454128116e-06 + "seconds": 5.49999822396785e-06 }, "_arrow_ready_rows": { "calls": 0, @@ -431,23 +431,23 @@ }, "_assert_lake_wide_claims": { "calls": 1, - "seconds": 0.0001652000028116163 + "seconds": 9.57000011112541e-05 }, "_build_claim_index_files": { "calls": 1, - "seconds": 17.43220999999903 + "seconds": 19.608818100001372 }, "_claim_database": { "calls": 1, - "seconds": 23.639003899999807 + "seconds": 26.698755500001425 }, "_claim_shard_manifests": { "calls": 1, - "seconds": 1.238394399999379 + "seconds": 1.3101673999990453 }, "_claim_shard_manifests_from_paths": { "calls": 4, - "seconds": 3.907032800005254 + "seconds": 4.650051799995708 }, "_duplicate_event_ids": { "calls": 0, @@ -459,23 +459,23 @@ }, "_logical_rows": { "calls": 1, - "seconds": 6.360000043059699e-05 + "seconds": 6.329999814624898e-05 }, "_partition_manifests": { "calls": 1, - "seconds": 1.553248700001859 + "seconds": 1.5965077999971982 }, "_publish_or_validate_claim_index": { "calls": 1, - "seconds": 1.6587462999996205 + "seconds": 1.9024305999992066 }, "_write_claim_index_manifest": { "calls": 1, - "seconds": 0.6860811000005924 + "seconds": 0.7481010000010428 }, "load_normalized_snapshot_v3": { "calls": 2, - "seconds": 30.054873699999007 + "seconds": 33.83859569999913 } }, "strict_reload_verified": true @@ -569,8 +569,8 @@ } ] }, - "elapsed_seconds": 57.483620099999825, - "events_per_second": 173962.59982589423, + "elapsed_seconds": 65.31793879999896, + "events_per_second": 153097.29890007124, "final_l2_checkpoint": { "instrument_id": "BTC-USDT-SPOT", "sequence": 10000000, @@ -604,8 +604,8 @@ "venue": "BINANCE" } ], - "peak_rss_bytes": 3171721216, - "peak_rss_gib": 2.9538955688476562, + "peak_rss_bytes": 3185700864, + "peak_rss_gib": 2.9669151306152344, "quarantined_rows": 0, "retained_bytes": 1103495926, "rows": 10000000, @@ -624,7 +624,7 @@ }, "_OpenPartition.flush": { "calls": 4, - "seconds": 5.000001692678779e-06 + "seconds": 5.699996108887717e-06 }, "_arrow_ready_rows": { "calls": 0, @@ -632,23 +632,23 @@ }, "_assert_lake_wide_claims": { "calls": 1, - "seconds": 6.489999941550195e-05 + "seconds": 8.119999984046444e-05 }, "_build_claim_index_files": { "calls": 1, - "seconds": 16.952792100000806 + "seconds": 20.092350899998564 }, "_claim_database": { "calls": 1, - "seconds": 24.3877121000005 + "seconds": 27.38903130000108 }, "_claim_shard_manifests": { "calls": 1, - "seconds": 1.0477202000001853 + "seconds": 1.4364416999997047 }, "_claim_shard_manifests_from_paths": { "calls": 4, - "seconds": 4.0621948999978486 + "seconds": 4.874611199993524 }, "_duplicate_event_ids": { "calls": 0, @@ -660,23 +660,23 @@ }, "_logical_rows": { "calls": 1, - "seconds": 6.450000000768341e-05 + "seconds": 6.360000043059699e-05 }, "_partition_manifests": { "calls": 1, - "seconds": 1.4980174000011175 + "seconds": 1.5722326000031899 }, "_publish_or_validate_claim_index": { "calls": 1, - "seconds": 1.7949523999996018 + "seconds": 1.9018204999993031 }, "_write_claim_index_manifest": { "calls": 1, - "seconds": 0.7279170999972848 + "seconds": 0.7818688000006659 }, "load_normalized_snapshot_v3": { "calls": 2, - "seconds": 30.71097500000178 + "seconds": 34.90367659999902 } }, "strict_reload_verified": true @@ -685,9 +685,9 @@ "runs": 3, "schema_version": "1.0.0", "summary": { - "maximum_peak_rss_gib": 2.9538955688476562, - "median_events_per_second": 174603.03794165084, - "minimum_events_per_second": 173962.59982589423, + "maximum_peak_rss_gib": 2.9669151306152344, + "median_events_per_second": 155071.19673755343, + "minimum_events_per_second": 153097.29890007124, "retained_bytes": 3310487778 }, "thresholds": { From 63f49b0e0cb19aea2a68d39641c005551f70928f Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sat, 29 Aug 2026 21:39:50 +0800 Subject: [PATCH 04/16] feat: add fail-closed public crypto L2 capture --- README.md | 7 +- docs/m7-crypto-l2-capture.md | 117 +++ docs/m7-data-performance.md | 22 +- pyproject.toml | 2 + requirements.lock | 2 + src/quant_data_kit/__init__.py | 26 + src/quant_data_kit/_version.py | 2 +- src/quant_data_kit/adapters_v2/base.py | 25 + src/quant_data_kit/adapters_v2/binance.py | 28 +- src/quant_data_kit/adapters_v2/okx.py | 7 + src/quant_data_kit/capture_v2/__init__.py | 101 +++ src/quant_data_kit/capture_v2/cli.py | 170 ++++ src/quant_data_kit/capture_v2/collector.py | 701 +++++++++++++++++ src/quant_data_kit/capture_v2/epoch.py | 260 +++++++ src/quant_data_kit/capture_v2/models.py | 599 +++++++++++++++ src/quant_data_kit/capture_v2/storage.py | 711 +++++++++++++++++ .../capture_v2/synchronizers.py | 502 ++++++++++++ src/quant_data_kit/capture_v2/transport.py | 116 +++ ...test_capture_v2_collector_cli_transport.py | 727 ++++++++++++++++++ tests/test_capture_v2_models_storage.py | 678 ++++++++++++++++ tests/test_capture_v2_synchronizers_epoch.py | 553 +++++++++++++ tests/test_m2_integration.py | 4 +- tools/check_branch_coverage.py | 7 + validation/m7-capture/coverage.json | 1 + validation/m7-capture/pytest-junit.xml | 1 + validation/m7-capture/summary.md | 82 ++ 26 files changed, 5430 insertions(+), 21 deletions(-) create mode 100644 docs/m7-crypto-l2-capture.md create mode 100644 src/quant_data_kit/capture_v2/__init__.py create mode 100644 src/quant_data_kit/capture_v2/cli.py create mode 100644 src/quant_data_kit/capture_v2/collector.py create mode 100644 src/quant_data_kit/capture_v2/epoch.py create mode 100644 src/quant_data_kit/capture_v2/models.py create mode 100644 src/quant_data_kit/capture_v2/storage.py create mode 100644 src/quant_data_kit/capture_v2/synchronizers.py create mode 100644 src/quant_data_kit/capture_v2/transport.py create mode 100644 tests/test_capture_v2_collector_cli_transport.py create mode 100644 tests/test_capture_v2_models_storage.py create mode 100644 tests/test_capture_v2_synchronizers_epoch.py create mode 100644 validation/m7-capture/coverage.json create mode 100644 validation/m7-capture/pytest-junit.xml create mode 100644 validation/m7-capture/summary.md diff --git a/README.md b/README.md index 585b644..8725800 100644 --- a/README.md +++ b/README.md @@ -77,10 +77,14 @@ move or rebuild a release tag to repair a dependency resolution. | `curated` | Session-aware bar aggregation and immutable revision/lineage snapshots | | `l2_replay` | Deterministic Snapshot+Delta reconstruction, sequence/cross checks and checkpoint hashes | | `adapters_v2` | Binance, OKX and supplier-neutral domestic desensitized fixture adapters | +| `capture_v2` | Fail-closed public Binance/OKX L2 capture, immutable batched Raw segments, snapshot synchronization, independent archive/restore verification and the Raw-to-Normalized bridge | The M7 Arrow batch entrypoint, bounded-memory validation architecture, benchmark scope, and the explicit gap between frozen fixtures and current OKX/Binance live-book semantics are documented in [`docs/m7-data-performance.md`](docs/m7-data-performance.md). +The public-feed collector's exact eight-stream scope, explicit storage configuration, state machine, +safe CLI modes and non-certification boundary are documented in +[`docs/m7-crypto-l2-capture.md`](docs/m7-crypto-l2-capture.md). ## M2 data-lake guarantees @@ -94,7 +98,7 @@ in [`docs/m7-data-performance.md`](docs/m7-data-performance.md). ## M2 fixture certification scope -For both Binance and OKX, the certified fixture set is deliberately narrow: BTC spot covers Trade、BBO、BookSnapshot和BookDelta; ETH spot covers Trade only; BTC and ETH perpetuals cover FundingRate and MarkPrice only. It does not claim every event type for all four instruments. The bundled OKX nonzero signed-CRC32 book sample is a historical golden fixture only: since 2026-06-23 the live JSON field is fixed to0 and is not an integrity gate. A current OKX collector must use TLS, enforce`seqId/prevSeqId`continuity, consume empty equal-sequence heartbeats without emitting`BookDelta`, and terminate admission on maintenance resets until a fresh snapshot. This package does not open a network feed and therefore does not certify those live-transport requirements. Binance has no equivalent checksum field, so its fixture gate is U/u/pu continuity plus immutable Raw SHA-256. The domestic supplier-neutral L2 fixture is deliberately marked`fixture-certified-not-market-data-certified`; it must not be described as real domestic market-data certification. +For both Binance and OKX, the certified fixture set is deliberately narrow: BTC spot covers Trade、BBO、BookSnapshot和BookDelta; ETH spot covers Trade only; BTC and ETH perpetuals cover FundingRate and MarkPrice only. It does not claim every event type for all four instruments. The bundled OKX nonzero signed-CRC32 book sample is a historical golden fixture only: since 2026-06-23 the live JSON field is fixed to0 and is not an integrity gate. A current OKX collector must use TLS, enforce`seqId/prevSeqId`continuity, consume empty equal-sequence heartbeats without emitting`BookDelta`, and terminate admission on maintenance resets until a fresh snapshot. The separate`capture_v2`module can open only public Binance/OKX market-data endpoints after physical-volume, capacity and archive/restore preflight succeeds. Its deterministic tests certify the transport and synchronization implementation, not a continuous real-market dataset. Binance has no equivalent checksum field, so its fixture gate is U/u/pu continuity plus immutable Raw SHA-256. The domestic supplier-neutral L2 fixture is deliberately marked`fixture-certified-not-market-data-certified`; it must not be described as real domestic market-data certification. ## PIT rules @@ -110,6 +114,7 @@ qdk-validate data/prices.parquet qdk-manifest data/prices.manifest.json qdk-catalog list qdk-catalog register hs300_prices data/prices.parquet +qdk-capture capture.json --mode preflight ``` ## Python API diff --git a/docs/m7-crypto-l2-capture.md b/docs/m7-crypto-l2-capture.md new file mode 100644 index 0000000..76d6c04 --- /dev/null +++ b/docs/m7-crypto-l2-capture.md @@ -0,0 +1,117 @@ +# M7 public Crypto L2 capture + +## Frozen scope and safety boundary + +`quant_data_kit.capture_v2`collects public market data only. It has no credential, account or order +API, rejects credential-like configuration keys recursively, and sends no orders. The default and +machine-certified scope is exactly these eight streams: + +| Provider | Market | Instruments | Feed | +|---|---|---|---| +| Binance | Spot | BTCUSDT、ETHUSDT | Public depth WebSocket plus public REST depth snapshot | +| Binance | USDT linear perpetual | BTCUSDT、ETHUSDT | Public USD-M depth WebSocket plus public REST depth snapshot | +| OKX | Spot | BTC-USDT、ETH-USDT | Public`books`WebSocket | +| OKX | USDT perpetual | BTC-USDT-SWAP、ETH-USDT-SWAP | Public`books`WebSocket | + +The run report always emits sorted providers`["binance","okx"]`and the sorted capabilities +`btc-spot-l2`、`btc-usdt-perpetual-l2`、`eth-spot-l2`and +`eth-usdt-perpetual-l2`. Configuration may replace endpoint details, but it must still describe +the same frozen eight-stream certification scope. + +This implementation is not evidence of30 continuous capture days and is not +`market-data-certified`. A bounded probe proves only that preflight, public transport and admission +work for that invocation. + +## State and synchronization rules + +Every stream has the explicit state sequence`CONNECTING→BUFFERING→SNAPSHOT_SYNC→LIVE`and can +terminate in`RESYNC`or`PAUSED`. Every transition, failure, retry, heartbeat, stale update and normal +absent-level deletion becomes an immutable audit Raw frame. Illegal transitions raise and emit an +alert instead of changing state silently. + +Binance messages are buffered before requesting the HTTPS snapshot. The bridge discards stale +updates, requires the first admitted update to satisfy`U<=lastUpdateId<=u`, then enforces the USD-M +`pu`chain or the applicable Spot update-ID continuity. Quantities are absolute; zero deletes a +level. Deleting an absent level is retained in Raw and audited as a documented no-op, not reported +as book corruption. + +OKX requires TLS and a fresh`action=snapshot`before updates. It enforces +`seqId/prevSeqId`continuity. A zero checksum is not integrity evidence, an equal-sequence empty +heartbeat creates no Normalized event, and a maintenance reset forces`RESYNC`and blocks deltas +until a new snapshot. + +## Immutable Raw and existing Normalized contract + +Each WebSocket or HTTPS response is preserved byte-for-byte in one`RawFrame`; frames are batched by +message count, exact wire-byte count or age into immutable Raw segments. A segment binds provider, +stream, receive/event time ranges, native sequence ranges, message count, wire bytes, SHA-256, +collector commit and previous-segment lineage. A segment is never one file per network message and +an existing immutable path cannot be overwritten with different bytes. + +Admitted snapshots and deltas are spooled in bounded Normalized epochs. Publication uses the +existing`write_normalized_events`path, PIT checks, schemas, quarantine rules and Raw references. +Gaps or connection failures close the current epoch visibly before resynchronization. + +## Capacity and independent archive controls + +`hot_root`、`archive_root`and`restore_root`must be explicit absolute existing directories. The hot +and archive roots are resolved through an injectable physical-volume probe; different path strings +on the same physical device fail preflight. Collection checks capacity before network startup and +before every write. It pauses if projected hot data exceeds150GiB or if free space falls below +`max(volume capacity*20%,100GiB)`. Archive reserve failures also pause collection. No capture path +deletes or evicts data automatically. + +Preflight writes an immutable archive probe, copies it to the archive volume, restores it under the +explicit restore root and recomputes SHA-256. Every Raw segment then repeats copy, manifest and +payload hashing, temporary restore, model re-read and hash comparison. Only a successful receipt +sets`archive_restore_verified=true`and`eligible_for_cleanup=true`; it always records +`cleanup_performed=false`. Cleanup is outside this collector and requires a separate explicit +operator action. + +## Configuration and CLI + +Example configuration, with operator-selected absolute paths: + +```json +{ + "hot_root": "", + "archive_root": "", + "restore_root": "", + "collector_commit": "", + "archive_reserve_bytes": 161061273600, + "rotation": { + "max_messages": 2000, + "max_wire_bytes": 16777216, + "max_age_seconds": 30 + }, + "retry": { + "max_attempts": 5, + "base_delay_seconds": 0.5, + "maximum_delay_seconds": 8.0, + "jitter_fraction": 0.2 + } +} +``` + +Safe preflight is the default and opens no network connection: + +```bash +qdk-capture capture.json +qdk-capture capture.json --mode preflight +``` + +A bounded public probe is explicit and still runs archive preflight first: + +```bash +qdk-capture capture.json --mode probe --max-messages 3 +``` + +Unbounded collection additionally requires`--confirm-long-running`. It still refuses to connect if +physical independence, free-space or archive/restore verification fails: + +```bash +qdk-capture capture.json --mode run --confirm-long-running +``` + +Do not use`run`as a service readiness claim. Operational certification still requires retained +continuous evidence, data-quality review and an independently reviewed capacity/retention plan. diff --git a/docs/m7-data-performance.md b/docs/m7-data-performance.md index 04f713a..05d6035 100644 --- a/docs/m7-data-performance.md +++ b/docs/m7-data-performance.md @@ -38,19 +38,19 @@ can be rebuilt from immutable partitions; a changed file or manifest fails close ## 2026 exchange-feed boundary -This release does not implement real network collectors. The following official -feed semantics are deliberately not folded into the frozen normalized event -contract: +The frozen normalized event contract remains independent of network transports. The M7 public-feed +collector implements the following admission semantics in`capture_v2`and bridges admitted records +into that existing contract; it does not create a second Normalized schema: - OKX deprecated the JSON `checksum` for `books`, `books-l2-tbt`, and `books50-l2-tbt` on 2026-06-23. The retained field is zero and is not a current - integrity signal. A future live adapter must require TLS `wss` transport and - strict `seqId`/`prevSeqId` processing. Sources: + integrity signal. The collector requires TLS`wss`transport and strict + `seqId`/`prevSeqId`processing. Sources: [checksum deprecation](https://www.okx.com/en-us/help/okx-order-book-channels-checksum-field-deprecation) and [OKX API v5](https://www.okx.com/docs-v5). - An OKX no-change heartbeat can have empty `asks`/`bids` and `seqId == prevSeqId`. It is transport liveness, not a frozen `BookDelta`, and - must not enter the normalized writer. A maintenance reset with + does not enter the normalized writer. A maintenance reset with `seqId < prevSeqId` must terminate the current admission transaction, discard deltas until a fresh snapshot, and start a new normalization transaction. The current v2 event contract intentionally rejects both equal-sequence deltas @@ -58,15 +58,17 @@ contract: - Binance USDⓈ-M local-book admission must first bridge `U <= lastUpdateId <= u`, then require each event's `pu` to equal the prior `u`. Quantities are absolute and zero means deletion. Binance documents that deleting - an absent local price can be normal. A future adapter must treat that raw event - as a measured no-op before emitting normalized deltas, because the current + an absent local price can be normal. The collector audits that raw event as a + measured no-op before emitting normalized deltas, because the frozen reconstructor rejects an absent-level delete. Source: [Binance USDⓈ-M local order book](https://developers.binance.com/docs/derivatives/usds-margined-futures/websocket-market-streams/How-to-manage-a-local-order-book-correctly). - Existing OKX CRC32 fixture tests remain historical fixture-integrity tests only. They are not labeled as 2026 OKX market-data certification. -These adapter policies require a serial contract review before real market-data -certification. They are not reasons to weaken the normalized batch gates. +The collector's exact scope, archive controls and safe CLI are documented in +[`m7-crypto-l2-capture.md`](m7-crypto-l2-capture.md). These implementation tests do not establish +continuous30-day evidence or real market-data certification, and they are not reasons to weaken +the normalized batch gates. ## Performance gate diff --git a/pyproject.toml b/pyproject.toml index f51d1cc..611d276 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ dependencies = [ "orjson>=3.11,<4.0", "duckdb>=1.4,<2.0", "typing-extensions>=4.4", + "websockets>=15.0,<16.0", ] [project.optional-dependencies] @@ -29,6 +30,7 @@ dev = ["coverage>=7.6", "psutil>=6.0,<8.0", "pytest>=7.4", "ruff>=0.9.0"] qdk-validate = "quant_data_kit.cli:main_validate" qdk-manifest = "quant_data_kit.cli:main_manifest" qdk-catalog = "quant_data_kit.cli:main_catalog" +qdk-capture = "quant_data_kit.capture_v2.cli:main_capture" [tool.setuptools.packages.find] where = ["src"] diff --git a/requirements.lock b/requirements.lock index b5b641f..4908d9a 100644 --- a/requirements.lock +++ b/requirements.lock @@ -67,6 +67,8 @@ typing-extensions==4.16.0 # referencing tzdata==2026.3 # via pandas +websockets==15.0.1 + # via quant-data-kit (pyproject.toml) # The following packages are considered to be unsafe in a requirements file: setuptools==84.0.0 diff --git a/src/quant_data_kit/__init__.py b/src/quant_data_kit/__init__.py index 0f8f58d..73aa842 100644 --- a/src/quant_data_kit/__init__.py +++ b/src/quant_data_kit/__init__.py @@ -11,6 +11,20 @@ adapt_fixture_messages, ) from quant_data_kit.calendar import trading_days_between +from quant_data_kit.capture_v2 import ( + M7_CAPABILITIES, + M7_PROVIDERS, + CaptureConfig, + CapturePausedError, + CaptureState, + CaptureStorageGuard, + CryptoL2CaptureCoordinator, + LocalArchiveController, + RawSegmentWriter, + StreamConfig, + VolumeIdentity, + default_crypto_l2_streams, +) from quant_data_kit.curated import ( CuratedSnapshot, Curator, @@ -110,6 +124,8 @@ from quant_data_kit.validate import validate_price_frame __all__ = [ + "M7_CAPABILITIES", + "M7_PROVIDERS", "SCHEMA_VERSION_V2", "AdapterContext", "AdapterInstrument", @@ -127,8 +143,13 @@ "BookSnapshotEvent", "CNNeutralFixtureAdapter", "CapacityDecision", + "CaptureConfig", + "CapturePausedError", + "CaptureState", + "CaptureStorageGuard", "CollectionStoppedError", "CorporateActionEvent", + "CryptoL2CaptureCoordinator", "CuratedSnapshot", "Curator", "DataManifest", @@ -140,6 +161,7 @@ "L2BookReconstructor", "L2ReplayError", "L2ReplayResult", + "LocalArchiveController", "MarginMode", "MarkPriceEvent", "MarketClock", @@ -151,13 +173,16 @@ "QuoteEvent", "RawObjectManifest", "RawObjectReference", + "RawSegmentWriter", "SessionPhase", "StatusEvent", "StoragePolicy", + "StreamConfig", "SymbolMapping", "TemporalAudit", "TradeEvent", "TradingSession", + "VolumeIdentity", "__version__", "adapt_fixture_messages", "add_industry_relative_strength", @@ -168,6 +193,7 @@ "create_snapshot", "curate_trade_bars_from_snapshot", "dataclass_payload", + "default_crypto_l2_streams", "ensure_utc_datetime", "evaluate_capacity", "get_arrow_schema", diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py index 5f9c3db..541c92e 100644 --- a/src/quant_data_kit/_version.py +++ b/src/quant_data_kit/_version.py @@ -1,3 +1,3 @@ """Single authoritative package version used by builds and runtime imports.""" -__version__ = "0.6.1" +__version__ = "0.7.0" diff --git a/src/quant_data_kit/adapters_v2/base.py b/src/quant_data_kit/adapters_v2/base.py index 19aad60..9f15c94 100644 --- a/src/quant_data_kit/adapters_v2/base.py +++ b/src/quant_data_kit/adapters_v2/base.py @@ -153,6 +153,31 @@ def reset(self, provider_symbol: str) -> None: self._provider_sequence.pop(provider_symbol, None) self._emitted_sequence.pop(provider_symbol, None) + def advance_without_levels( + self, + provider_symbol: str, + *, + provider_previous_sequence: int, + provider_sequence: int, + ) -> None: + """Advance provider continuity when a live update has no material local-book change. + + Current market feeds may send no-change updates or deletes for price levels that are + already absent. Those messages remain in Raw and advance provider continuity, but they + must not manufacture a BookDelta that the strict L2 reconstructor would reject. + """ + if provider_symbol not in self._provider_sequence: + raise ValidationError("provider no-change update arrived before BookSnapshot") + expected_provider = self._provider_sequence[provider_symbol] + if provider_previous_sequence != expected_provider: + raise ValidationError( + f"provider no-change gap: expected previous={expected_provider}, " + f"actual={provider_previous_sequence}" + ) + if provider_sequence <= provider_previous_sequence: + raise ValidationError("provider no-change sequence did not advance") + self._provider_sequence[provider_symbol] = provider_sequence + def delta( self, provider_symbol: str, diff --git a/src/quant_data_kit/adapters_v2/binance.py b/src/quant_data_kit/adapters_v2/binance.py index 285c4d8..003ff13 100644 --- a/src/quant_data_kit/adapters_v2/binance.py +++ b/src/quant_data_kit/adapters_v2/binance.py @@ -36,12 +36,17 @@ class BinanceFixtureAdapter: "Binance publishes no books checksum field" ) - def __init__(self, context: AdapterContext) -> None: + def __init__(self, context: AdapterContext, *, event_id_namespace: str | None = None) -> None: if context.provider != "binance": raise ValidationError("Binance adapter context provider must be binance") self.context = context + self._event_id_namespace = event_id_namespace self._book_sequences = BookSequenceNormalizer() + def _event_id(self, event: str, symbol: str, suffix: str | int) -> str: + namespace = f"-{self._event_id_namespace}" if self._event_id_namespace else "" + return f"binance-{event}-{symbol}{namespace}-{suffix}" + @contextmanager def transaction(self) -> Iterable[None]: with self._book_sequences.transaction(): @@ -65,7 +70,7 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-trade-{symbol}-{message['t']}", + event_id=self._event_id("trade", symbol, message["t"]), sequence=int(message["t"]), ), price=fixed(message["p"], instrument.price_scale, "p"), @@ -80,7 +85,7 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-bbo-{symbol}-{message['u']}", + event_id=self._event_id("bbo", symbol, message["u"]), sequence=int(message["u"]), ), bid_price=fixed(message["b"], instrument.price_scale, "b"), @@ -99,7 +104,7 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-book-snapshot-{symbol}-{provider_sequence}", + event_id=self._event_id("book-snapshot", symbol, provider_sequence), sequence=sequence, ), bids=tuple( @@ -130,6 +135,13 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: changes = [(BookSide.BID, item) for item in message["b"]] + [ (BookSide.ASK, item) for item in message["a"] ] + if not changes: + self._book_sequences.advance_without_levels( + symbol, + provider_previous_sequence=provider_previous, + provider_sequence=provider_sequence, + ) + return [] pairs = self._book_sequences.delta( symbol, provider_previous_sequence=provider_previous, @@ -148,7 +160,9 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-book-delta-{symbol}-{message['u']}-{index}", + event_id=self._event_id( + "book-delta", symbol, f"{message['u']}-{index}" + ), sequence=sequence, ), side=side, @@ -166,7 +180,7 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-funding-{symbol}-{message['T']}", + event_id=self._event_id("funding", symbol, message["T"]), sequence=int(message["T"]), ), rate=float(message["r"]), @@ -181,7 +195,7 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: symbol, event_time=event_time, received_at=received_at, - event_id=f"binance-mark-{symbol}-{message['E']}", + event_id=self._event_id("mark", symbol, message["E"]), sequence=int(message["E"]), ), price=fixed(message["p"], instrument.price_scale, "p"), diff --git a/src/quant_data_kit/adapters_v2/okx.py b/src/quant_data_kit/adapters_v2/okx.py index 4a44ee1..fdef8b7 100644 --- a/src/quant_data_kit/adapters_v2/okx.py +++ b/src/quant_data_kit/adapters_v2/okx.py @@ -225,6 +225,13 @@ def adapt(self, message: Mapping[str, Any]) -> list[dict[str, Any]]: changes = [(BookSide.BID, item) for item in message["bids"]] + [ (BookSide.ASK, item) for item in message["asks"] ] + if not changes: + self._book_sequences.advance_without_levels( + symbol, + provider_previous_sequence=provider_previous_sequence, + provider_sequence=provider_sequence, + ) + return [] pairs = self._book_sequences.delta( symbol, provider_previous_sequence=provider_previous_sequence, diff --git a/src/quant_data_kit/capture_v2/__init__.py b/src/quant_data_kit/capture_v2/__init__.py new file mode 100644 index 0000000..815bc5d --- /dev/null +++ b/src/quant_data_kit/capture_v2/__init__.py @@ -0,0 +1,101 @@ +"""Public, fail-closed Crypto L2 capture interfaces.""" + +from quant_data_kit.capture_v2.collector import ( + CaptureRunReport, + CaptureStreamReport, + CryptoL2CaptureCoordinator, +) +from quant_data_kit.capture_v2.epoch import NormalizedEpochReceipt +from quant_data_kit.capture_v2.models import ( + M7_CAPABILITIES, + M7_PROVIDERS, + AuditEvent, + CaptureConfig, + CaptureState, + CaptureStateMachine, + Clock, + MarketKind, + MonotonicReceivedClock, + Provider, + RawFrame, + RetryPolicy, + SegmentRotation, + StreamConfig, + SymbolMappingResolver, + SystemClock, + assert_m7_scope, + canonical_json_bytes, + default_crypto_l2_streams, + default_symbol_mappings, + random_jitter, + utc_text, +) +from quant_data_kit.capture_v2.storage import ( + ArchivePreflightReceipt, + CapturePausedError, + CaptureStorageGuard, + DiskCapacity, + LocalArchiveController, + RawSegment, + RawSegmentWriter, + SegmentArchiveReceipt, + StoragePreflight, + VolumeIdentity, + default_capacity_probe, + default_volume_identity, + iter_segment_frames, +) +from quant_data_kit.capture_v2.synchronizers import ( + BinanceBookSynchronizer, + NormalizationOutcome, + Observation, + OKXBookSynchronizer, + ResyncRequired, +) + +__all__ = [ + "M7_CAPABILITIES", + "M7_PROVIDERS", + "ArchivePreflightReceipt", + "AuditEvent", + "BinanceBookSynchronizer", + "CaptureConfig", + "CapturePausedError", + "CaptureRunReport", + "CaptureState", + "CaptureStateMachine", + "CaptureStorageGuard", + "CaptureStreamReport", + "Clock", + "CryptoL2CaptureCoordinator", + "DiskCapacity", + "LocalArchiveController", + "MarketKind", + "MonotonicReceivedClock", + "NormalizationOutcome", + "NormalizedEpochReceipt", + "OKXBookSynchronizer", + "Observation", + "Provider", + "RawFrame", + "RawSegment", + "RawSegmentWriter", + "ResyncRequired", + "RetryPolicy", + "SegmentArchiveReceipt", + "SegmentRotation", + "StoragePreflight", + "StreamConfig", + "SymbolMappingResolver", + "SystemClock", + "VolumeIdentity", + "assert_m7_scope", + "canonical_json_bytes", + "default_capacity_probe", + "default_crypto_l2_streams", + "default_symbol_mappings", + "default_volume_identity", + "iter_segment_frames", + "random_jitter", + "utc_text", +] diff --git a/src/quant_data_kit/capture_v2/cli.py b/src/quant_data_kit/capture_v2/cli.py new file mode 100644 index 0000000..d1b2742 --- /dev/null +++ b/src/quant_data_kit/capture_v2/cli.py @@ -0,0 +1,170 @@ +"""Safe-by-default CLI for the public Crypto L2 collector.""" + +from __future__ import annotations + +import argparse +import asyncio +import json +from dataclasses import asdict +from pathlib import Path +from typing import Any + +from quant_data_kit.capture_v2.collector import CryptoL2CaptureCoordinator +from quant_data_kit.capture_v2.models import ( + CaptureConfig, + MarketKind, + Provider, + RetryPolicy, + SegmentRotation, + StreamConfig, + default_crypto_l2_streams, +) +from quant_data_kit.exceptions import ValidationError + +_CONFIG_KEYS = { + "hot_root", + "archive_root", + "restore_root", + "collector_commit", + "streams", + "rotation", + "retry", + "archive_reserve_bytes", +} +_STREAM_KEYS = { + "stream_id", + "provider", + "market", + "native_symbol", + "instrument_id", + "venue", + "websocket_url", + "channel", + "price_scale", + "quantity_scale", + "rest_snapshot_url", +} +_FORBIDDEN_KEY_PARTS = ("api_key", "secret", "token", "account", "authorization", "headers") + + +def _reject_credentials(value: Any, path: str = "config") -> None: + if isinstance(value, dict): + for key, item in value.items(): + normalized = str(key).lower().replace("-", "_") + if any(part in normalized for part in _FORBIDDEN_KEY_PARTS): + raise ValidationError( + f"public market-data capture rejects credential/account field: {path}.{key}" + ) + _reject_credentials(item, f"{path}.{key}") + elif isinstance(value, list): + for index, item in enumerate(value): + _reject_credentials(item, f"{path}[{index}]") + + +def load_capture_config(path: Path) -> CaptureConfig: + try: + payload = json.loads(Path(path).read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError(f"capture config is unreadable or malformed: {path}") from exc + if not isinstance(payload, dict): + raise ValidationError("capture config must be a JSON object") + _reject_credentials(payload) + unknown = sorted(set(payload).difference(_CONFIG_KEYS)) + if unknown: + raise ValidationError(f"capture config contains unsupported fields: {unknown}") + required = {"hot_root", "archive_root", "restore_root", "collector_commit"} + missing = sorted(required.difference(payload)) + if missing: + raise ValidationError(f"capture config is missing explicit fields: {missing}") + streams = _streams(payload.get("streams")) + rotation_payload = payload.get("rotation", {}) + retry_payload = payload.get("retry", {}) + if not isinstance(rotation_payload, dict) or not isinstance(retry_payload, dict): + raise ValidationError("rotation and retry must be JSON objects") + try: + return CaptureConfig( + hot_root=Path(str(payload["hot_root"])), + archive_root=Path(str(payload["archive_root"])), + restore_root=Path(str(payload["restore_root"])), + collector_commit=str(payload["collector_commit"]), + streams=streams, + rotation=SegmentRotation(**rotation_payload), + retry=RetryPolicy(**retry_payload), + archive_reserve_bytes=int(payload.get("archive_reserve_bytes", 150 * 1024**3)), + ) + except (TypeError, ValueError) as exc: + raise ValidationError(f"capture config values are invalid: {exc}") from exc + + +def _streams(value: Any) -> tuple[StreamConfig, ...]: + if value is None: + return default_crypto_l2_streams() + if not isinstance(value, list) or not value: + raise ValidationError("streams must be a non-empty JSON array") + streams: list[StreamConfig] = [] + for index, item in enumerate(value): + if not isinstance(item, dict): + raise ValidationError(f"streams[{index}] must be an object") + unknown = sorted(set(item).difference(_STREAM_KEYS)) + if unknown: + raise ValidationError(f"streams[{index}] contains unsupported fields: {unknown}") + try: + values = dict(item) + values["provider"] = Provider(values["provider"]) + values["market"] = MarketKind(values["market"]) + streams.append(StreamConfig(**values)) + except (KeyError, TypeError, ValueError) as exc: + raise ValidationError(f"streams[{index}] is invalid: {exc}") from exc + return tuple(streams) + + +def _parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="qdk-capture", + description="Fail-closed public Binance/OKX Crypto L2 capture", + ) + parser.add_argument("config", type=Path, help="Explicit JSON config; no credentials accepted") + parser.add_argument( + "--mode", + choices=("preflight", "probe", "run"), + default="preflight", + help="Default only validates archive/capacity and opens no network connection", + ) + parser.add_argument( + "--max-messages", + type=int, + default=3, + help="Per-stream public WebSocket message bound in probe mode", + ) + parser.add_argument( + "--confirm-long-running", + action="store_true", + help="Required for run mode after archive preflight succeeds", + ) + return parser + + +def main_capture(argv: list[str] | None = None) -> int: + args = _parser().parse_args(argv) + try: + config = load_capture_config(args.config) + coordinator = CryptoL2CaptureCoordinator(config) + if args.mode == "preflight": + report = coordinator.preflight_only() + elif args.mode == "probe": + if args.max_messages < 2: + raise ValidationError("probe mode requires --max-messages>=2") + report = asyncio.run(coordinator.run(maximum_websocket_messages=args.max_messages)) + else: + if not args.confirm_long_running: + raise ValidationError("run mode requires explicit --confirm-long-running") + report = asyncio.run(coordinator.run(maximum_websocket_messages=None)) + except (ValidationError, OSError) as exc: + print(json.dumps({"status": "PAUSED", "error": str(exc)}, ensure_ascii=False)) + return 2 + print(json.dumps(asdict(report), indent=2, ensure_ascii=False)) + return 0 if "FAILED" not in report.status else 2 + + +if __name__ == "__main__": + raise SystemExit(main_capture()) diff --git a/src/quant_data_kit/capture_v2/collector.py b/src/quant_data_kit/capture_v2/collector.py new file mode 100644 index 0000000..986972b --- /dev/null +++ b/src/quant_data_kit/capture_v2/collector.py @@ -0,0 +1,701 @@ +"""Fail-closed public Crypto L2 collector orchestration.""" + +from __future__ import annotations + +import asyncio +import hashlib +import json +import os +import uuid +from collections.abc import Callable +from dataclasses import asdict, dataclass +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from quant_data_kit.capture_v2.epoch import NormalizedEpochJournal, NormalizedEpochReceipt +from quant_data_kit.capture_v2.models import ( + CaptureConfig, + CaptureState, + CaptureStateMachine, + Clock, + MonotonicReceivedClock, + Provider, + RawFrame, + StreamConfig, + SymbolMappingResolver, + SystemClock, + assert_m7_scope, + canonical_json_bytes, + default_symbol_mappings, + random_jitter, + utc_text, +) +from quant_data_kit.capture_v2.storage import ( + ArchivePreflightReceipt, + CapturePausedError, + CaptureStorageGuard, + LocalArchiveController, + RawSegmentWriter, + SegmentArchiveReceipt, +) +from quant_data_kit.capture_v2.synchronizers import ( + BinanceBookSynchronizer, + NormalizationOutcome, + OKXBookSynchronizer, + ResyncRequired, +) +from quant_data_kit.capture_v2.transport import ( + HttpClient, + UrllibHttpClient, + WebSocketConnection, + WebSocketConnector, + WebsocketsConnector, +) +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.exceptions import ValidationError + +UTC = timezone.utc +_DEFAULT_POLICY = StoragePolicy() + + +@dataclass(frozen=True) +class CaptureStreamReport: + stream_id: str + provider: str + capability: str + final_state: str + websocket_messages: int + raw_segments: int + archived_segments: int + normalized_epochs: int + accepted_rows: int + quarantined_rows: int + resyncs: int + duplicate_or_old_updates: int + absent_level_deletes: int + heartbeats: int + first_received_at: str | None + last_received_at: str | None + audit_events: int + audit_failures: int + errors: tuple[str, ...] + epoch_receipts: tuple[str, ...] + + +@dataclass(frozen=True) +class CaptureRunReport: + schema_version: str + run_id: str + started_at: str + ended_at: str + status: str + providers: tuple[str, ...] + capabilities: tuple[str, ...] + streams: tuple[CaptureStreamReport, ...] + archive_preflight_receipt: str | None + continuous_days: int + market_data_certified: bool + long_running_capture_started: bool + report_sha256: str + report_path: str | None + + +def _json_object(payload: bytes, provider: str) -> dict[str, Any]: + try: + value = json.loads(payload) + except (UnicodeError, json.JSONDecodeError) as exc: + raise ResyncRequired(f"{provider} message is not valid JSON") from exc + if not isinstance(value, dict): + raise ResyncRequired(f"{provider} message must be a JSON object") + if provider == "binance" and isinstance(value.get("data"), dict): + return dict(value["data"]) + return value + + +def _frame_metadata(provider: Provider, payload: bytes) -> tuple[datetime | None, dict[str, int]]: + message = _json_object(payload, provider.value) + if provider is Provider.BINANCE: + event_ms = message.get("T", message.get("E")) + sequences = { + key: int(message[key]) for key in ("U", "u", "pu") if message.get(key) is not None + } + else: + data = message.get("data") + item = data[0] if isinstance(data, list) and data and isinstance(data[0], dict) else {} + event_ms = item.get("ts") + sequences = { + key: int(item[key]) for key in ("seqId", "prevSeqId") if item.get(key) is not None + } + if event_ms is None: + return None, sequences + try: + event_time = datetime.fromtimestamp(int(event_ms) / 1000, tz=UTC) + except (OSError, TypeError, ValueError) as exc: + raise ResyncRequired(f"{provider.value} event timestamp is invalid") from exc + return event_time, sequences + + +class CaptureStreamRunner: + def __init__( + self, + config: CaptureConfig, + stream: StreamConfig, + *, + storage_guard: CaptureStorageGuard, + archive: LocalArchiveController, + mappings: SymbolMappingResolver, + http: HttpClient, + websockets: WebSocketConnector, + clock: Clock, + jitter: Callable[[], float], + alert_sink: Callable[[str], None], + policy: StoragePolicy = _DEFAULT_POLICY, + receive_timeout_seconds: float = 30.0, + ) -> None: + self.config = config + self.stream = stream + self.storage_guard = storage_guard + self.archive = archive + self.mappings = mappings + self.http = http + self.websockets = websockets + self.clock = clock + self.jitter = jitter + self.alert_sink = alert_sink + self.policy = policy + self.receive_timeout_seconds = receive_timeout_seconds + self.connection_id = f"conn-{uuid.uuid4().hex}" + self._audit_failures = 0 + self.segment_writer = RawSegmentWriter( + config.hot_root, + stream.stream_id, + stream.provider.value, + collector_commit=config.collector_commit, + rotation=config.rotation, + storage_guard=storage_guard, + policy=policy, + ) + self.state = CaptureStateMachine( + stream, + connection_id=self.connection_id, + collector_commit=config.collector_commit, + clock=clock, + audit_sink=self.segment_writer.append, + alert_sink=self._alert, + ) + self._received_clock = MonotonicReceivedClock(clock) + self._journal: NormalizedEpochJournal | None = None + self._epoch_receipts: list[NormalizedEpochReceipt] = [] + self._archive_receipts: list[SegmentArchiveReceipt] = [] + self._errors: list[str] = [] + self._websocket_messages = 0 + self._first_received_at: datetime | None = None + self._last_received_at: datetime | None = None + self._resyncs = 0 + self._observations: dict[str, int] = {} + + async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamReport: + failed_attempts = 0 + while self.state.state is not CaptureState.PAUSED: + if self.state.state is CaptureState.RESYNC: + self.state.transition(CaptureState.CONNECTING, "bounded_reconnect") + self._drain_segments() + try: + await self._run_connection(maximum_websocket_messages) + if maximum_websocket_messages is not None: + self.state.transition(CaptureState.PAUSED, "bounded_probe_complete") + self.segment_writer.flush() + self._drain_segments() + self._finalize_epoch() + break + failed_attempts = 0 + except asyncio.CancelledError: + self._pause("capture_cancelled") + raise + except Exception as exc: # noqa: BLE001 - all feed failures require audit/retry + failed_attempts += 1 + self._errors.append(f"{type(exc).__name__}: {exc}") + self.state.audit( + "capture_failure", + str(exc), + {"attempt": failed_attempts, "exception": type(exc).__name__}, + ) + if self.state.state is CaptureState.PAUSED: + self._alert( + f"CAPTURE_PAUSED:{self.stream.stream_id}:post_pause_failure:" + f"{type(exc).__name__}:{exc}" + ) + break + if self.state.state not in {CaptureState.CONNECTING, CaptureState.RESYNC}: + self.state.transition( + CaptureState.RESYNC, + "connection_or_sequence_failure", + {"exception": type(exc).__name__, "message": str(exc)}, + ) + self._resyncs += 1 + self.segment_writer.flush() + try: + self._drain_segments() + except Exception as archive_exc: # noqa: BLE001 - archive failures always pause + self._errors.append(f"{type(archive_exc).__name__}: {archive_exc}") + self._pause("archive_failure", archive_exc) + break + self._finalize_epoch(abort_reason=str(exc)) + if failed_attempts >= self.config.retry.max_attempts: + self._pause("retry_budget_exhausted", exc) + break + delay = self.config.retry.delay(failed_attempts, self.jitter) + self.state.audit( + "retry_scheduled", "bounded_exponential_backoff", {"seconds": delay} + ) + await self.clock.sleep(delay) + if self.segment_writer.pending_messages: + self.segment_writer.flush() + try: + self._drain_segments() + except Exception as exc: # noqa: BLE001 - terminal archive failure remains visible + self._errors.append(f"{type(exc).__name__}: {exc}") + self._alert( + f"TERMINAL_ARCHIVE_FAILURE:{self.stream.stream_id}:{type(exc).__name__}:{exc}" + ) + self._finalize_epoch() + return self._report() + + async def _run_connection(self, maximum_websocket_messages: int | None) -> None: + connection = await self.websockets.connect( + self.stream.websocket_url, + timeout_seconds=self.receive_timeout_seconds, + ) + try: + self.state.transition(CaptureState.BUFFERING, "tls_websocket_connected") + self._drain_segments() + self._new_epoch() + if self.stream.provider is Provider.BINANCE: + await self._run_binance(connection, maximum_websocket_messages) + else: + await self._run_okx(connection, maximum_websocket_messages) + finally: + await connection.close() + + async def _run_binance( + self, + connection: WebSocketConnection, + maximum_websocket_messages: int | None, + ) -> None: + synchronizer = BinanceBookSynchronizer(self.stream, self.mappings) + first = await self._receive_frame(connection) + self.state.audit("websocket_buffered", "snapshot_not_yet_requested", {}) + self.state.transition(CaptureState.SNAPSHOT_SYNC, "requesting_https_depth_snapshot") + self._drain_segments() + assert self.stream.rest_snapshot_url is not None + response = await self.http.get( + self.stream.rest_snapshot_url, + timeout_seconds=self.receive_timeout_seconds, + ) + snapshot_frame = self._https_frame(response.body, response.url, event_time=first.event_time) + self.segment_writer.append(snapshot_frame) + self._apply_outcome(synchronizer.admit_snapshot(snapshot_frame)) + self._apply_outcome(synchronizer.admit_update(first)) + while not synchronizer.live: + self._apply_outcome(synchronizer.admit_update(await self._receive_frame(connection))) + self.state.transition(CaptureState.LIVE, "rest_snapshot_bridge_complete") + self._drain_segments() + while ( + maximum_websocket_messages is None + or self._websocket_messages < maximum_websocket_messages + ): + self._apply_outcome(synchronizer.admit_update(await self._receive_frame(connection))) + self._drain_segments() + + async def _run_okx( + self, + connection: WebSocketConnection, + maximum_websocket_messages: int | None, + ) -> None: + synchronizer = OKXBookSynchronizer(self.stream, self.mappings) + subscription = canonical_json_bytes( + { + "op": "subscribe", + "args": [{"channel": self.stream.channel, "instId": self.stream.native_symbol}], + } + ) + await connection.send(subscription) + self.state.audit("subscription_sent", "public_books_channel", {}) + self.state.transition(CaptureState.SNAPSHOT_SYNC, "awaiting_websocket_snapshot") + self._drain_segments() + while not synchronizer.live: + self._apply_outcome(synchronizer.admit_message(await self._receive_frame(connection))) + self._drain_segments() + self.state.transition(CaptureState.LIVE, "websocket_snapshot_admitted") + self._drain_segments() + while ( + maximum_websocket_messages is None + or self._websocket_messages < maximum_websocket_messages + ): + self._apply_outcome(synchronizer.admit_message(await self._receive_frame(connection))) + self._drain_segments() + + async def _receive_frame(self, connection: WebSocketConnection) -> RawFrame: + payload = await connection.receive(timeout_seconds=self.receive_timeout_seconds) + observed, received = self._received_clock.now() + event_time, sequences = _frame_metadata(self.stream.provider, payload) + frame = RawFrame( + frame_kind="market_data", + provider=self.stream.provider.value, + stream_id=self.stream.stream_id, + connection_id=self.connection_id, + subscription=self.stream.channel, + transport="wss", + tls_url=self.stream.websocket_url, + received_at=received, + observed_at=observed, + event_time=event_time, + payload=payload, + native_sequence=sequences, + collector_commit=self.config.collector_commit, + ) + self.segment_writer.append(frame) + self._websocket_messages += 1 + self._first_received_at = self._first_received_at or received + self._last_received_at = received + return frame + + def _https_frame( + self, + payload: bytes, + url: str, + *, + event_time: datetime | None, + ) -> RawFrame: + observed, received = self._received_clock.now() + try: + value = json.loads(payload) + sequences = {"lastUpdateId": int(value["lastUpdateId"])} + except (UnicodeError, json.JSONDecodeError, KeyError, TypeError, ValueError) as exc: + raise ResyncRequired("Binance HTTPS snapshot is malformed") from exc + return RawFrame( + frame_kind="rest_snapshot", + provider=self.stream.provider.value, + stream_id=self.stream.stream_id, + connection_id=self.connection_id, + subscription=self.stream.channel, + transport="https", + tls_url=url, + received_at=received, + observed_at=observed, + event_time=event_time, + payload=payload, + native_sequence=sequences, + collector_commit=self.config.collector_commit, + ) + + def _apply_outcome(self, outcome: NormalizationOutcome) -> None: + if self._journal is None: + raise ValidationError("Normalized epoch journal was not initialized") + self._journal.append(outcome.records) + for observation in outcome.observations: + self._observations[observation.event] = self._observations.get(observation.event, 0) + 1 + self.state.audit(observation.event, observation.reason, observation.details) + + def _new_epoch(self) -> None: + if self._journal is not None: + raise ValidationError("previous Normalized epoch was not finalized") + epoch_id = f"{utc_text(self.clock.now(), 'epoch start').replace(':', '').replace('-', '')}-{uuid.uuid4().hex}" + self._journal = NormalizedEpochJournal( + self.config.hot_root, + epoch_id=epoch_id, + stream_id=self.stream.stream_id, + provider=self.stream.provider.value, + venue=self.stream.venue, + storage_guard=self.storage_guard, + policy=self.policy, + ) + + def _drain_segments(self) -> None: + for segment in self.segment_writer.drain_completed(): + receipt = self.archive.archive_segment(segment) + if not receipt.archive_restore_verified or not receipt.eligible_for_cleanup: + raise CapturePausedError("CAPTURE_PAUSED: segment archive was not restore-verified") + self._archive_receipts.append(receipt) + if self._journal is not None: + self._journal.record_segment(segment) + + def _finalize_epoch(self, abort_reason: str | None = None) -> None: + if self._journal is None: + return + journal, self._journal = self._journal, None + if abort_reason and not journal.records: + journal.abort_visible(abort_reason) + return + receipt = journal.finalize(created_at=self.clock.now()) + self._epoch_receipts.append(receipt) + + def _pause(self, reason: str, exc: Exception | None = None) -> None: + if self.state.state is CaptureState.PAUSED: + return + details = {"exception": type(exc).__name__, "message": str(exc)} if exc is not None else {} + # PAUSED is a legal terminal transition from every non-terminal capture state. + # The state machine remains the single authority for rejecting illegal transitions. + self.state.transition(CaptureState.PAUSED, reason, details) + self._alert(f"CAPTURE_PAUSED:{self.stream.stream_id}:{reason}") + + def _alert(self, message: str) -> None: + if message.startswith("AUDIT_PERSISTENCE_FAILED"): + self._audit_failures += 1 + self.alert_sink(message) + + def _report(self) -> CaptureStreamReport: + accepted = sum(item.accepted_rows for item in self._epoch_receipts) + quarantined = sum(item.quarantined_rows for item in self._epoch_receipts) + return CaptureStreamReport( + stream_id=self.stream.stream_id, + provider=self.stream.provider.value, + capability=self.stream.capability, + final_state=self.state.state.value, + websocket_messages=self._websocket_messages, + raw_segments=self.segment_writer.segment_count, + archived_segments=len(self._archive_receipts), + normalized_epochs=len(self._epoch_receipts), + accepted_rows=accepted, + quarantined_rows=quarantined, + resyncs=self._resyncs, + duplicate_or_old_updates=self._observations.get("duplicate_or_old_update", 0), + absent_level_deletes=self._observations.get("absent_level_delete", 0), + heartbeats=self._observations.get("book_heartbeat", 0), + first_received_at=( + utc_text(self._first_received_at, "first_received_at") + if self._first_received_at + else None + ), + last_received_at=( + utc_text(self._last_received_at, "last_received_at") + if self._last_received_at + else None + ), + audit_events=len(self.state.events), + audit_failures=self._audit_failures, + errors=tuple(self._errors), + epoch_receipts=tuple(item.receipt_path for item in self._epoch_receipts), + ) + + +class CryptoL2CaptureCoordinator: + """Preflight all storage before any of the eight public market connections can start.""" + + def __init__( + self, + config: CaptureConfig, + *, + storage_guard: CaptureStorageGuard | None = None, + archive: LocalArchiveController | None = None, + mappings: SymbolMappingResolver | None = None, + http: HttpClient | None = None, + websockets: WebSocketConnector | None = None, + clock: Clock | None = None, + jitter: Callable[[], float] = random_jitter, + alert_sink: Callable[[str], None] | None = None, + policy: StoragePolicy = _DEFAULT_POLICY, + ) -> None: + assert_m7_scope(config.streams) + self.config = config + self.clock = clock or SystemClock() + self.alert_sink = alert_sink or (lambda _message: None) + self.storage_guard = storage_guard or CaptureStorageGuard( + config.hot_root, + config.archive_root, + policy=policy, + archive_reserve_bytes=config.archive_reserve_bytes, + ) + self.archive = archive or LocalArchiveController( + config.hot_root, + config.archive_root, + config.restore_root, + storage_guard=self.storage_guard, + clock=self.clock.now, + ) + self.mappings = mappings or SymbolMappingResolver(default_symbol_mappings(config.streams)) + self.http = http or UrllibHttpClient() + self.websockets = websockets or WebsocketsConnector() + self.jitter = jitter + self.policy = policy + + def preflight(self) -> ArchivePreflightReceipt: + return self.archive.preflight() + + def preflight_only(self) -> CaptureRunReport: + started = self.clock.now() + run_id = f"capture-{uuid.uuid4().hex}" + preflight: ArchivePreflightReceipt | None = None + errors: tuple[str, ...] = () + try: + preflight = self.preflight() + status = "PREFLIGHT_PASSED_NETWORK_NOT_STARTED" + except Exception as exc: # noqa: BLE001 - all preflight failures become PAUSED + status = "PAUSED_PREFLIGHT_FAILED" + errors = (f"{type(exc).__name__}: {exc}",) + self.alert_sink(f"CAPTURE_PAUSED:PREFLIGHT_FAILED:{type(exc).__name__}:{exc}") + reports = tuple( + CaptureStreamReport( + stream_id=stream.stream_id, + provider=stream.provider.value, + capability=stream.capability, + final_state=CaptureState.PAUSED.value, + websocket_messages=0, + raw_segments=0, + archived_segments=0, + normalized_epochs=0, + accepted_rows=0, + quarantined_rows=0, + resyncs=0, + duplicate_or_old_updates=0, + absent_level_deletes=0, + heartbeats=0, + first_received_at=None, + last_received_at=None, + audit_events=1, + audit_failures=0, + errors=errors, + epoch_receipts=(), + ) + for stream in self.config.streams + ) + return self._write_report( + run_id, + started, + reports, + preflight=preflight, + status=status, + long_running_capture_started=False, + ) + + async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunReport: + started = self.clock.now() + run_id = f"capture-{uuid.uuid4().hex}" + try: + preflight = self.preflight() + except Exception as exc: # noqa: BLE001 - preflight must convert every failure to PAUSED + self.alert_sink(f"CAPTURE_PAUSED:PREFLIGHT_FAILED:{type(exc).__name__}:{exc}") + reports = tuple( + CaptureStreamReport( + stream_id=stream.stream_id, + provider=stream.provider.value, + capability=stream.capability, + final_state=CaptureState.PAUSED.value, + websocket_messages=0, + raw_segments=0, + archived_segments=0, + normalized_epochs=0, + accepted_rows=0, + quarantined_rows=0, + resyncs=0, + duplicate_or_old_updates=0, + absent_level_deletes=0, + heartbeats=0, + first_received_at=None, + last_received_at=None, + audit_events=1, + audit_failures=0, + errors=(f"{type(exc).__name__}: {exc}",), + epoch_receipts=(), + ) + for stream in self.config.streams + ) + return self._write_report( + run_id, + started, + reports, + preflight=None, + status="PAUSED_PREFLIGHT_FAILED", + long_running_capture_started=False, + ) + runners = [ + CaptureStreamRunner( + self.config, + stream, + storage_guard=self.storage_guard, + archive=self.archive, + mappings=self.mappings, + http=self.http, + websockets=self.websockets, + clock=self.clock, + jitter=self.jitter, + alert_sink=self.alert_sink, + policy=self.policy, + ) + for stream in self.config.streams + ] + results = await asyncio.gather( + *( + runner.run(maximum_websocket_messages=maximum_websocket_messages) + for runner in runners + ) + ) + status = ( + "BOUNDED_PROBE_COMPLETE" + if maximum_websocket_messages is not None + else "STOPPED_WITHOUT_CERTIFICATION" + ) + return self._write_report( + run_id, + started, + tuple(results), + preflight=preflight, + status=status, + long_running_capture_started=maximum_websocket_messages is None, + ) + + def _write_report( + self, + run_id: str, + started_at: datetime, + streams: tuple[CaptureStreamReport, ...], + *, + preflight: ArchivePreflightReceipt | None, + status: str, + long_running_capture_started: bool, + ) -> CaptureRunReport: + ended = self.clock.now() + identity = { + "schema_version": "puresaber.crypto-l2-capture-run@1.0.0", + "run_id": run_id, + "started_at": utc_text(started_at, "started_at"), + "ended_at": utc_text(ended, "ended_at"), + "status": status, + "providers": list(self.config.providers), + "capabilities": list(self.config.capabilities), + "streams": [asdict(item) for item in streams], + "archive_preflight_receipt": preflight.receipt_path if preflight else None, + "continuous_days": 0, + "market_data_certified": False, + "long_running_capture_started": long_running_capture_started, + } + report_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "report_sha256": report_hash} + report_path: Path | None = None + try: + report_path = self.config.hot_root / "capture" / "run-reports" / f"{run_id}.json" + report_path.parent.mkdir(parents=True, exist_ok=True) + with report_path.open("xb") as stream: + stream.write(canonical_json_bytes(payload)) + stream.flush() + os.fsync(stream.fileno()) + except OSError as exc: + self.alert_sink(f"CAPTURE_REPORT_PERSISTENCE_FAILED:{type(exc).__name__}:{exc}") + report_path = None + return CaptureRunReport( + schema_version=identity["schema_version"], + run_id=run_id, + started_at=identity["started_at"], + ended_at=identity["ended_at"], + status=status, + providers=self.config.providers, + capabilities=self.config.capabilities, + streams=streams, + archive_preflight_receipt=identity["archive_preflight_receipt"], + continuous_days=0, + market_data_certified=False, + long_running_capture_started=long_running_capture_started, + report_sha256=report_hash, + report_path=str(report_path) if report_path else None, + ) diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py new file mode 100644 index 0000000..fe1e7d0 --- /dev/null +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -0,0 +1,260 @@ +"""Durable Normalized epoch journal backed by immutable Raw segment references.""" + +from __future__ import annotations + +import hashlib +import json +import os +from collections.abc import Iterable, Mapping +from dataclasses import asdict, dataclass +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from quant_data_kit.capture_v2.models import canonical_json_bytes, utc_text +from quant_data_kit.capture_v2.storage import CaptureStorageGuard, RawSegment +from quant_data_kit.data_lake import ( + NormalizationResult, + RawObjectReference, + StoragePolicy, + write_normalized_events, +) +from quant_data_kit.exceptions import ValidationError + +UTC = timezone.utc +_DEFAULT_POLICY = StoragePolicy() + + +@dataclass(frozen=True) +class EpochPart: + relative_path: str + rows: int + content_sha256: str + byte_length: int + + +@dataclass(frozen=True) +class NormalizedEpochReceipt: + schema_version: str + epoch_id: str + stream_id: str + provider: str + venue: str + created_at: str + records: int + raw_segments: int + raw_references: tuple[RawObjectReference, ...] + journal_parts: tuple[EpochPart, ...] + normalized_snapshot_id: str | None + accepted_rows: int + quarantined_rows: int + receipt_sha256: str + receipt_path: str + + +def _sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +class NormalizedEpochJournal: + """Spool live v2 records with bounded memory, then publish one replay-complete epoch.""" + + def __init__( + self, + hot_root: Path, + *, + epoch_id: str, + stream_id: str, + provider: str, + venue: str, + storage_guard: CaptureStorageGuard, + policy: StoragePolicy = _DEFAULT_POLICY, + max_part_rows: int = 50_000, + ) -> None: + if max_part_rows < 1: + raise ValidationError("max_part_rows must be positive") + self.hot_root = Path(hot_root) + self.epoch_id = epoch_id + self.stream_id = stream_id + self.provider = provider + self.venue = venue + self.storage_guard = storage_guard + self.policy = policy + self.max_part_rows = max_part_rows + self.root = ( + self.hot_root + / "capture" + / "normalized-epoch-journal" + / f"stream={stream_id}" + / f"epoch={epoch_id}" + ) + self.root.mkdir(parents=True, exist_ok=False) + self._open_path = self.root / "part-open.ndjson" + self._open_stream = self._open_path.open("xb") + self._open_rows = 0 + self._records = 0 + self._parts: list[EpochPart] = [] + self._raw_references: list[RawObjectReference] = [] + self._raw_manifest_hashes: set[str] = set() + self._closed = False + + def append(self, records: Iterable[Mapping[str, Any]]) -> None: + self._require_open() + for record in records: + body = canonical_json_bytes(dict(record)) + b"\n" + self.storage_guard.require_hot_capacity(projected_write_bytes=len(body)) + self._open_stream.write(body) + self._open_stream.flush() + os.fsync(self._open_stream.fileno()) + self._open_rows += 1 + self._records += 1 + if self._open_rows >= self.max_part_rows: + self._seal_part() + + def record_segment(self, segment: RawSegment) -> None: + self._require_open() + reference = segment.raw_manifest.reference() + if reference.manifest_sha256 in self._raw_manifest_hashes: + raise ValidationError("Normalized epoch received a duplicate Raw segment reference") + self._raw_manifest_hashes.add(reference.manifest_sha256) + self._raw_references.append(reference) + + @property + def records(self) -> int: + return self._records + + def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochReceipt: + self._require_open() + self._seal_part() + self._open_stream.close() + self._closed = True + if self._records and not self._raw_references: + raise ValidationError("Normalized epoch records require Raw segment lineage") + result = ( + self._publish_normalized() if self._records else NormalizationResult(None, 0, 0, None) + ) + created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") + identity = { + "schema_version": "puresaber.normalized-epoch-receipt@1.0.0", + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": created, + "records": self._records, + "raw_segments": len(self._raw_references), + "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "normalized_snapshot_id": result.snapshot.snapshot_id if result.snapshot else None, + "accepted_rows": result.accepted_rows, + "quarantined_rows": result.quarantined_rows, + } + receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "receipt_sha256": receipt_hash} + receipt_path = self.root / "receipt.json" + with receipt_path.open("xb") as stream: + stream.write(canonical_json_bytes(payload)) + stream.flush() + os.fsync(stream.fileno()) + return NormalizedEpochReceipt( + schema_version=identity["schema_version"], + epoch_id=self.epoch_id, + stream_id=self.stream_id, + provider=self.provider, + venue=self.venue, + created_at=created, + records=self._records, + raw_segments=len(self._raw_references), + raw_references=tuple(self._raw_references), + journal_parts=tuple(self._parts), + normalized_snapshot_id=identity["normalized_snapshot_id"], + accepted_rows=result.accepted_rows, + quarantined_rows=result.quarantined_rows, + receipt_sha256=receipt_hash, + receipt_path=str(receipt_path), + ) + + def abort_visible(self, reason: str) -> Path: + if not self._closed: + self._open_stream.flush() + os.fsync(self._open_stream.fileno()) + self._open_stream.close() + self._closed = True + payload = { + "schema_version": "puresaber.normalized-epoch-abort@1.0.0", + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "reason": reason, + "records": self._records, + "raw_references": [asdict(item) for item in self._raw_references], + } + payload["abort_sha256"] = hashlib.sha256(canonical_json_bytes(payload)).hexdigest() + path = self.root / "aborted.json" + with path.open("xb") as stream: + stream.write(canonical_json_bytes(payload)) + stream.flush() + os.fsync(stream.fileno()) + return path + + def _seal_part(self) -> None: + if self._open_rows == 0: + return + self._open_stream.flush() + os.fsync(self._open_stream.fileno()) + self._open_stream.close() + digest = _sha256_file(self._open_path) + index = len(self._parts) + 1 + final_name = f"part-{index:08d}-sha256-{digest}.ndjson" + final_path = self.root / final_name + os.replace(self._open_path, final_path) + self._parts.append( + EpochPart( + relative_path=final_name, + rows=self._open_rows, + content_sha256=digest, + byte_length=final_path.stat().st_size, + ) + ) + self._open_rows = 0 + self._open_path = self.root / "part-open.ndjson" + self._open_stream = self._open_path.open("xb") + + def _publish_normalized(self) -> NormalizationResult: + return write_normalized_events( + self.hot_root, + self._iter_records(), + provider=self.provider, + venue=self.venue, + upstream_raw_references=self._raw_references, + policy=self.policy, + ) + + def _iter_records(self) -> Iterable[dict[str, Any]]: + for part in self._parts: + path = self.root / part.relative_path + if path.stat().st_size != part.byte_length or _sha256_file(path) != part.content_sha256: + raise ValidationError(f"Normalized epoch journal part integrity changed: {path}") + with path.open("rb") as stream: + for line_number, line in enumerate(stream, start=1): + try: + value = json.loads(line) + except (UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError( + f"Normalized epoch journal line is malformed: {path}:{line_number}" + ) from exc + if not isinstance(value, dict): + raise ValidationError("Normalized epoch journal record must be an object") + yield value + + def _require_open(self) -> None: + if self._closed: + raise ValidationError("Normalized epoch journal is already closed") + + def __del__(self) -> None: + stream = getattr(self, "_open_stream", None) + if stream is not None and not stream.closed: + stream.close() diff --git a/src/quant_data_kit/capture_v2/models.py b/src/quant_data_kit/capture_v2/models.py new file mode 100644 index 0000000..065bf2f --- /dev/null +++ b/src/quant_data_kit/capture_v2/models.py @@ -0,0 +1,599 @@ +"""Frozen configuration and audit contracts for public Crypto L2 capture.""" + +from __future__ import annotations + +import asyncio +import base64 +import hashlib +import json +import random +from collections.abc import Callable, Iterable, Mapping +from dataclasses import dataclass, field +from datetime import datetime, timedelta, timezone +from enum import Enum +from pathlib import Path +from types import MappingProxyType +from typing import Any, ClassVar, Protocol + +from quant_data_kit.domain_v2 import SymbolMapping +from quant_data_kit.exceptions import ValidationError +from quant_data_kit.temporal_v2 import ensure_utc_datetime + +UTC = timezone.utc +M7_PROVIDERS = ("binance", "okx") +M7_CAPABILITIES = ( + "btc-spot-l2", + "btc-usdt-perpetual-l2", + "eth-spot-l2", + "eth-usdt-perpetual-l2", +) + + +class Provider(str, Enum): + BINANCE = "binance" + OKX = "okx" + + +class MarketKind(str, Enum): + SPOT = "spot" + USDT_PERPETUAL = "usdt_perpetual" + + +class CaptureState(str, Enum): + CONNECTING = "CONNECTING" + BUFFERING = "BUFFERING" + SNAPSHOT_SYNC = "SNAPSHOT_SYNC" + LIVE = "LIVE" + RESYNC = "RESYNC" + PAUSED = "PAUSED" + + +def utc_text(value: datetime, field_name: str = "timestamp") -> str: + return ensure_utc_datetime(value, field=field_name).isoformat().replace("+00:00", "Z") + + +def canonical_json_bytes(value: Any) -> bytes: + return json.dumps( + value, + ensure_ascii=False, + allow_nan=False, + separators=(",", ":"), + sort_keys=True, + ).encode("utf-8") + + +class Clock(Protocol): + def now(self) -> datetime: ... + + async def sleep(self, seconds: float) -> None: ... + + +class SystemClock: + def now(self) -> datetime: + return datetime.now(tz=UTC) + + async def sleep(self, seconds: float) -> None: + await asyncio.sleep(seconds) + + +class MonotonicReceivedClock: + """Keep receive timestamps UTC and strictly monotonic within one connection.""" + + def __init__(self, clock: Clock) -> None: + self._clock = clock + self._last: datetime | None = None + + def now(self) -> tuple[datetime, datetime]: + observed = ensure_utc_datetime(self._clock.now(), field="clock.now") + received = observed + if self._last is not None and received <= self._last: + received = self._last + timedelta(microseconds=1) + self._last = received + return observed, received + + +@dataclass(frozen=True) +class RetryPolicy: + max_attempts: int = 5 + base_delay_seconds: float = 0.5 + maximum_delay_seconds: float = 8.0 + jitter_fraction: float = 0.20 + + def __post_init__(self) -> None: + if self.max_attempts < 1: + raise ValidationError("max_attempts must be positive") + if self.base_delay_seconds <= 0 or self.maximum_delay_seconds <= 0: + raise ValidationError("retry delays must be positive") + if self.maximum_delay_seconds < self.base_delay_seconds: + raise ValidationError("maximum_delay_seconds must not be below base delay") + if not 0 <= self.jitter_fraction <= 1: + raise ValidationError("jitter_fraction must be between zero and one") + + def delay(self, failed_attempt: int, jitter: Callable[[], float]) -> float: + if failed_attempt < 1 or failed_attempt >= self.max_attempts: + raise ValidationError("failed_attempt is outside the retryable range") + sample = float(jitter()) + if not 0 <= sample <= 1: + raise ValidationError("jitter source must return a value between zero and one") + base = min( + self.maximum_delay_seconds, + self.base_delay_seconds * (2 ** (failed_attempt - 1)), + ) + spread = base * self.jitter_fraction + return max(0.0, base - spread + 2 * spread * sample) + + +def random_jitter() -> float: + return random.SystemRandom().random() + + +@dataclass(frozen=True) +class SegmentRotation: + max_messages: int = 2_000 + max_wire_bytes: int = 16 * 1024 * 1024 + max_age_seconds: float = 30.0 + + def __post_init__(self) -> None: + if self.max_messages < 2: + raise ValidationError("Raw segments must batch at least two messages") + if self.max_wire_bytes <= 0 or self.max_age_seconds <= 0: + raise ValidationError("Raw segment rotation limits must be positive") + + +@dataclass(frozen=True) +class StreamConfig: + stream_id: str + provider: Provider + market: MarketKind + native_symbol: str + instrument_id: str + venue: str + websocket_url: str + channel: str + price_scale: int = 8 + quantity_scale: int = 8 + rest_snapshot_url: str | None = None + + def __post_init__(self) -> None: + for name in ("stream_id", "native_symbol", "instrument_id", "venue", "channel"): + value = getattr(self, name) + if not isinstance(value, str) or not value.strip(): + raise ValidationError(f"{name} must be a non-empty string") + if not self.websocket_url.startswith("wss://"): + raise ValidationError("public market-data websocket_url must use TLS wss://") + if self.provider is Provider.BINANCE: + if not self.rest_snapshot_url or not self.rest_snapshot_url.startswith("https://"): + raise ValidationError("Binance L2 requires an HTTPS REST snapshot endpoint") + elif self.rest_snapshot_url is not None: + raise ValidationError("OKX books snapshot must arrive on its public WebSocket channel") + if self.price_scale < 0 or self.quantity_scale < 0: + raise ValidationError("fixed-point scales must be non-negative") + + @property + def capability(self) -> str: + asset = "btc" if "BTC" in self.native_symbol.upper() else "eth" + suffix = "spot-l2" if self.market is MarketKind.SPOT else "usdt-perpetual-l2" + return f"{asset}-{suffix}" + + @property + def mapping_source(self) -> str: + """Disambiguate venues where spot and derivatives reuse the same native code.""" + return f"{self.provider.value}:{self.market.value}" + + +@dataclass(frozen=True) +class CaptureConfig: + hot_root: Path + archive_root: Path + restore_root: Path + collector_commit: str + streams: tuple[StreamConfig, ...] = field(default_factory=tuple) + rotation: SegmentRotation = field(default_factory=SegmentRotation) + retry: RetryPolicy = field(default_factory=RetryPolicy) + archive_reserve_bytes: int = 150 * 1024**3 + + def __post_init__(self) -> None: + for name in ("hot_root", "archive_root", "restore_root"): + path = Path(getattr(self, name)) + if not path.is_absolute(): + raise ValidationError(f"{name} must be an explicit absolute path") + object.__setattr__(self, name, path) + if not self.collector_commit.strip(): + raise ValidationError("collector_commit must be explicit") + if not self.streams: + raise ValidationError("capture configuration must include streams") + ids = [stream.stream_id for stream in self.streams] + if len(ids) != len(set(ids)): + raise ValidationError("stream_id values must be unique") + if self.archive_reserve_bytes <= 0: + raise ValidationError("archive_reserve_bytes must be positive") + + @property + def providers(self) -> tuple[str, ...]: + return tuple(sorted({stream.provider.value for stream in self.streams})) + + @property + def capabilities(self) -> tuple[str, ...]: + return tuple(sorted({stream.capability for stream in self.streams})) + + +def default_crypto_l2_streams() -> tuple[StreamConfig, ...]: + streams: list[StreamConfig] = [] + for symbol, asset in (("BTCUSDT", "BTC-USDT"), ("ETHUSDT", "ETH-USDT")): + lower = symbol.lower() + streams.append( + StreamConfig( + stream_id=f"binance-spot-{lower}-l2", + provider=Provider.BINANCE, + market=MarketKind.SPOT, + native_symbol=symbol, + instrument_id=f"CRYPTO:BINANCE:{asset}:SPOT", + venue="BINANCE", + websocket_url=f"wss://stream.binance.com:9443/ws/{lower}@depth@100ms", + channel="depth", + rest_snapshot_url=( + f"https://api.binance.com/api/v3/depth?symbol={symbol}&limit=1000" + ), + ) + ) + streams.append( + StreamConfig( + stream_id=f"binance-usdt-perpetual-{lower}-l2", + provider=Provider.BINANCE, + market=MarketKind.USDT_PERPETUAL, + native_symbol=symbol, + instrument_id=f"CRYPTO:BINANCE:{asset}:PERP", + venue="BINANCE", + websocket_url=( + f"wss://fstream.binance.com/public/stream?streams={lower}@depth@100ms" + ), + channel="depth", + rest_snapshot_url=( + f"https://fapi.binance.com/fapi/v1/depth?symbol={symbol}&limit=1000" + ), + ) + ) + for symbol, asset, market in ( + ("BTC-USDT", "BTC-USDT", MarketKind.SPOT), + ("ETH-USDT", "ETH-USDT", MarketKind.SPOT), + ("BTC-USDT-SWAP", "BTC-USDT", MarketKind.USDT_PERPETUAL), + ("ETH-USDT-SWAP", "ETH-USDT", MarketKind.USDT_PERPETUAL), + ): + market_name = "spot" if market is MarketKind.SPOT else "usdt-perpetual" + product = "SPOT" if market is MarketKind.SPOT else "PERP" + streams.append( + StreamConfig( + stream_id=f"okx-{market_name}-{symbol.lower()}-l2", + provider=Provider.OKX, + market=market, + native_symbol=symbol, + instrument_id=f"CRYPTO:OKX:{asset}:{product}", + venue="OKX", + websocket_url="wss://ws.okx.com:8443/ws/v5/public", + channel="books", + ) + ) + return tuple(sorted(streams, key=lambda item: item.stream_id)) + + +def default_symbol_mappings( + streams: Iterable[StreamConfig], + *, + available_at: datetime | None = None, +) -> tuple[SymbolMapping, ...]: + known_at = available_at or datetime(2020, 1, 1, tzinfo=UTC) + return tuple( + SymbolMapping( + source=stream.mapping_source, + provider_symbol=stream.native_symbol, + instrument_id=stream.instrument_id, + effective_from=datetime(2017, 1, 1, tzinfo=UTC), + available_at=known_at, + ) + for stream in streams + ) + + +class SymbolMappingResolver: + def __init__(self, mappings: Iterable[SymbolMapping]) -> None: + grouped: dict[tuple[str, str], list[SymbolMapping]] = {} + for mapping in mappings: + grouped.setdefault((mapping.source, mapping.provider_symbol), []).append(mapping) + self._mappings = MappingProxyType( + { + key: tuple(sorted(value, key=lambda item: item.effective_from)) + for key, value in grouped.items() + } + ) + + def resolve( + self, + source: str, + provider_symbol: str, + *, + event_time: datetime, + known_at: datetime, + ) -> str: + event = ensure_utc_datetime(event_time, field="event_time") + known = ensure_utc_datetime(known_at, field="known_at") + candidates = self._mappings.get((source, provider_symbol), ()) + valid = [ + mapping + for mapping in candidates + if mapping.effective_from <= event + and (mapping.effective_to is None or event < mapping.effective_to) + and mapping.available_at <= known + and (mapping.superseded_at is None or known < mapping.superseded_at) + ] + if len(valid) != 1: + raise ValidationError( + "SymbolMapping resolution must yield exactly one stable instrument_id: " + f"source={source}, symbol={provider_symbol}, matches={len(valid)}" + ) + return valid[0].instrument_id + + +@dataclass(frozen=True) +class RawFrame: + frame_kind: str + provider: str + stream_id: str + connection_id: str + subscription: str + transport: str + tls_url: str + received_at: datetime + observed_at: datetime + payload: bytes + native_sequence: Mapping[str, int] = field(default_factory=dict) + event_time: datetime | None = None + collector_commit: str = "" + + def __post_init__(self) -> None: + if self.transport not in {"wss", "https", "audit"}: + raise ValidationError("Raw frame transport must be wss, https, or audit") + if self.transport in {"wss", "https"} and not self.tls_url.startswith( + f"{self.transport}://" + ): + raise ValidationError("Raw market frame URL does not match its TLS transport") + received = ensure_utc_datetime(self.received_at, field="received_at") + observed = ensure_utc_datetime(self.observed_at, field="observed_at") + event = ( + ensure_utc_datetime(self.event_time, field="event_time") + if self.event_time is not None + else None + ) + if not isinstance(self.payload, bytes): + raise ValidationError("Raw frame payload must be exact bytes") + if not self.collector_commit: + raise ValidationError("Raw frame collector_commit must be explicit") + sequences = {str(key): int(value) for key, value in self.native_sequence.items()} + object.__setattr__(self, "received_at", received) + object.__setattr__(self, "observed_at", observed) + object.__setattr__(self, "event_time", event) + object.__setattr__(self, "native_sequence", MappingProxyType(sequences)) + + @property + def raw_sha256(self) -> str: + return hashlib.sha256(self.payload).hexdigest() + + def record(self) -> dict[str, Any]: + return { + "schema_version": "puresaber.raw-frame@1.0.0", + "frame_kind": self.frame_kind, + "provider": self.provider, + "stream_id": self.stream_id, + "connection_id": self.connection_id, + "subscription": self.subscription, + "transport": self.transport, + "tls_url": self.tls_url, + "event_time": utc_text(self.event_time, "event_time") if self.event_time else None, + "received_at": utc_text(self.received_at, "received_at"), + "observed_at": utc_text(self.observed_at, "observed_at"), + "native_sequence": dict(self.native_sequence), + "raw_byte_length": len(self.payload), + "raw_sha256": self.raw_sha256, + "payload_base64": base64.b64encode(self.payload).decode("ascii"), + "collector_commit": self.collector_commit, + } + + @classmethod + def from_record(cls, record: Mapping[str, Any]) -> RawFrame: + if record.get("schema_version") != "puresaber.raw-frame@1.0.0": + raise ValidationError("unsupported Raw frame schema") + try: + payload = base64.b64decode(str(record["payload_base64"]), validate=True) + received = datetime.fromisoformat(str(record["received_at"]).replace("Z", "+00:00")) + observed = datetime.fromisoformat(str(record["observed_at"]).replace("Z", "+00:00")) + event_text = record.get("event_time") + event = ( + datetime.fromisoformat(str(event_text).replace("Z", "+00:00")) + if event_text + else None + ) + frame = cls( + frame_kind=str(record["frame_kind"]), + provider=str(record["provider"]), + stream_id=str(record["stream_id"]), + connection_id=str(record["connection_id"]), + subscription=str(record["subscription"]), + transport=str(record["transport"]), + tls_url=str(record["tls_url"]), + event_time=event, + received_at=received, + observed_at=observed, + native_sequence=dict(record.get("native_sequence", {})), + payload=payload, + collector_commit=str(record["collector_commit"]), + ) + except (KeyError, TypeError, ValueError) as exc: + raise ValidationError("Raw frame record is malformed") from exc + if frame.raw_sha256 != record.get("raw_sha256") or len(payload) != record.get( + "raw_byte_length" + ): + raise ValidationError("Raw frame exact-byte integrity changed") + return frame + + +@dataclass(frozen=True) +class AuditEvent: + ordinal: int + stream_id: str + occurred_at: datetime + event: str + from_state: CaptureState | None + to_state: CaptureState + reason: str + details: Mapping[str, Any] = field(default_factory=dict) + + def __post_init__(self) -> None: + object.__setattr__( + self, "occurred_at", ensure_utc_datetime(self.occurred_at, field="occurred_at") + ) + object.__setattr__(self, "details", MappingProxyType(dict(self.details))) + + def payload(self) -> bytes: + value = { + "schema_version": "puresaber.capture-audit@1.0.0", + "ordinal": self.ordinal, + "stream_id": self.stream_id, + "occurred_at": utc_text(self.occurred_at, "occurred_at"), + "event": self.event, + "from_state": self.from_state.value if self.from_state else None, + "to_state": self.to_state.value, + "reason": self.reason, + "details": dict(self.details), + } + return canonical_json_bytes(value) + + +class CaptureStateMachine: + _ALLOWED: ClassVar[dict[CaptureState, set[CaptureState]]] = { + CaptureState.CONNECTING: {CaptureState.BUFFERING, CaptureState.PAUSED}, + CaptureState.BUFFERING: { + CaptureState.SNAPSHOT_SYNC, + CaptureState.RESYNC, + CaptureState.PAUSED, + }, + CaptureState.SNAPSHOT_SYNC: { + CaptureState.LIVE, + CaptureState.RESYNC, + CaptureState.PAUSED, + }, + CaptureState.LIVE: {CaptureState.RESYNC, CaptureState.PAUSED}, + CaptureState.RESYNC: {CaptureState.CONNECTING, CaptureState.PAUSED}, + CaptureState.PAUSED: set(), + } + + def __init__( + self, + stream: StreamConfig, + *, + connection_id: str, + collector_commit: str, + clock: Clock, + audit_sink: Callable[[RawFrame], None] | None = None, + alert_sink: Callable[[str], None] | None = None, + ) -> None: + self.stream = stream + self.connection_id = connection_id + self.collector_commit = collector_commit + self.clock = clock + self.audit_sink = audit_sink + self.alert_sink = alert_sink or (lambda _message: None) + self.state = CaptureState.CONNECTING + self._events: list[AuditEvent] = [] + self._record(None, CaptureState.CONNECTING, "state_initialized", {}) + + @property + def events(self) -> tuple[AuditEvent, ...]: + return tuple(self._events) + + def transition( + self, + target: CaptureState, + reason: str, + details: Mapping[str, Any] | None = None, + ) -> AuditEvent: + source = self.state + if target not in self._ALLOWED[source]: + event = self._record( + source, + source, + "illegal_transition", + {"attempted_state": target.value, "reason": reason, **dict(details or {})}, + ) + self.alert_sink( + f"ILLEGAL_CAPTURE_TRANSITION:{self.stream.stream_id}:{source.value}->{target.value}" + ) + raise ValidationError( + f"illegal capture state transition: {source.value}->{target.value}; " + f"audit_ordinal={event.ordinal}" + ) + self.state = target + return self._record(source, target, reason, dict(details or {})) + + def audit( + self, event: str, reason: str, details: Mapping[str, Any] | None = None + ) -> AuditEvent: + return self._record( + self.state, self.state, event, {"reason": reason, **dict(details or {})} + ) + + def _record( + self, + source: CaptureState | None, + target: CaptureState, + reason: str, + details: Mapping[str, Any], + ) -> AuditEvent: + occurred = ensure_utc_datetime(self.clock.now(), field="audit clock") + event = AuditEvent( + ordinal=len(self._events) + 1, + stream_id=self.stream.stream_id, + occurred_at=occurred, + event="state_transition" if source != target else reason, + from_state=source, + to_state=target, + reason=reason, + details=details, + ) + self._events.append(event) + if self.audit_sink is not None: + try: + self.audit_sink( + RawFrame( + frame_kind="audit", + provider=self.stream.provider.value, + stream_id=self.stream.stream_id, + connection_id=self.connection_id, + subscription=self.stream.channel, + transport="audit", + tls_url="audit://local", + received_at=occurred, + observed_at=occurred, + payload=event.payload(), + native_sequence={"audit_ordinal": event.ordinal}, + collector_commit=self.collector_commit, + ) + ) + except Exception as exc: # noqa: BLE001 - audit persistence must not mask state + self.alert_sink( + f"AUDIT_PERSISTENCE_FAILED:{self.stream.stream_id}:{type(exc).__name__}:{exc}" + ) + return event + + +def assert_m7_scope(streams: Iterable[StreamConfig]) -> None: + values = tuple(streams) + providers = tuple(sorted({item.provider.value for item in values})) + capabilities = tuple(sorted({item.capability for item in values})) + if len(values) != 8: + raise ValidationError( + f"M7 Crypto certification requires exactly 8 streams, got {len(values)}" + ) + if providers != M7_PROVIDERS: + raise ValidationError(f"M7 providers must be {list(M7_PROVIDERS)}, got {list(providers)}") + missing = sorted(set(M7_CAPABILITIES).difference(capabilities)) + if missing: + raise ValidationError(f"M7 capabilities are missing: {missing}") diff --git a/src/quant_data_kit/capture_v2/storage.py b/src/quant_data_kit/capture_v2/storage.py new file mode 100644 index 0000000..fa94eed --- /dev/null +++ b/src/quant_data_kit/capture_v2/storage.py @@ -0,0 +1,711 @@ +"""Raw segment rotation, capacity gates, and independently verified local archives.""" + +from __future__ import annotations + +import ctypes +import hashlib +import json +import os +import shutil +import tempfile +import uuid +from collections.abc import Callable, Iterable, Mapping +from dataclasses import asdict, dataclass +from datetime import datetime, timezone +from pathlib import Path +from types import MappingProxyType +from typing import Protocol + +from quant_data_kit.capture_v2.models import ( + RawFrame, + SegmentRotation, + canonical_json_bytes, + utc_text, +) +from quant_data_kit.data_lake import ( + RawObjectManifest, + StoragePolicy, + evaluate_capacity, + load_raw_object, + write_raw_bytes, +) +from quant_data_kit.exceptions import ValidationError + +UTC = timezone.utc +_GIB = 1024**3 +_DEFAULT_POLICY = StoragePolicy() + + +class CapturePausedError(ValidationError): + """A fail-closed storage condition that requires operator intervention.""" + + +@dataclass(frozen=True) +class DiskCapacity: + total_bytes: int + free_bytes: int + + +@dataclass(frozen=True) +class VolumeIdentity: + identity: str + physical_devices: tuple[str, ...] + + def __post_init__(self) -> None: + devices = tuple(sorted(set(self.physical_devices))) + if not self.identity or not devices: + raise ValidationError("volume identity must include auditable physical devices") + object.__setattr__(self, "physical_devices", devices) + + +class VolumeIdentityProbe(Protocol): + def __call__(self, path: Path) -> VolumeIdentity: ... + + +class CapacityProbe(Protocol): + def __call__(self, path: Path) -> DiskCapacity: ... + + +def default_capacity_probe(path: Path) -> DiskCapacity: + usage = shutil.disk_usage(path) + return DiskCapacity(total_bytes=usage.total, free_bytes=usage.free) + + +def _windows_volume_identity(path: Path) -> VolumeIdentity: + from ctypes import wintypes + + class DiskExtent(ctypes.Structure): + _fields_ = [ + ("disk_number", wintypes.DWORD), + ("starting_offset", ctypes.c_longlong), + ("extent_length", ctypes.c_longlong), + ] + + class VolumeDiskExtents(ctypes.Structure): + _fields_ = [("count", wintypes.DWORD), ("extents", DiskExtent * 1)] + + anchor = Path(path).resolve(strict=True).anchor.rstrip("\\/") + if len(anchor) != 2 or anchor[1] != ":": + raise CapturePausedError(f"cannot resolve Windows volume anchor for {path}") + volume_path = rf"\\.\{anchor}" + create_file = ctypes.windll.kernel32.CreateFileW + create_file.argtypes = [ + wintypes.LPCWSTR, + wintypes.DWORD, + wintypes.DWORD, + wintypes.LPVOID, + wintypes.DWORD, + wintypes.DWORD, + wintypes.HANDLE, + ] + create_file.restype = wintypes.HANDLE + handle = create_file( + volume_path, + 0, + 0x00000001 | 0x00000002, + None, + 3, + 0, + None, + ) + invalid_handle = wintypes.HANDLE(-1).value + if handle == invalid_handle: + raise CapturePausedError(f"cannot open volume for physical identity: {anchor}") + try: + output = ctypes.create_string_buffer(4096) + returned = wintypes.DWORD() + ok = ctypes.windll.kernel32.DeviceIoControl( + handle, + 0x00560000, + None, + 0, + output, + len(output), + ctypes.byref(returned), + None, + ) + if not ok or returned.value < VolumeDiskExtents.extents.offset: + raise CapturePausedError(f"physical disk extents unavailable for {anchor}") + count = int.from_bytes(output.raw[:4], "little") + if count < 1: + raise CapturePausedError(f"volume has no physical disk extents: {anchor}") + offset = VolumeDiskExtents.extents.offset + extent_size = ctypes.sizeof(DiskExtent) + devices = [] + for index in range(count): + end = offset + (index + 1) * extent_size + if end > returned.value: + raise CapturePausedError(f"truncated physical disk extents for {anchor}") + extent = DiskExtent.from_buffer_copy(output.raw, offset + index * extent_size) + devices.append(f"windows-physical-disk-{extent.disk_number}") + return VolumeIdentity( + identity=f"windows-volume-{anchor.upper()}", physical_devices=tuple(devices) + ) + finally: + ctypes.windll.kernel32.CloseHandle(handle) + + +def _linux_physical_devices(path: Path) -> tuple[str, ...]: + stat_result = os.stat(path) + major, minor = os.major(stat_result.st_dev), os.minor(stat_result.st_dev) + sys_device = Path(f"/sys/dev/block/{major}:{minor}") + if not sys_device.exists(): + raise CapturePausedError(f"Linux physical block identity unavailable for {path}") + resolved = sys_device.resolve(strict=True) + slaves = resolved / "slaves" + if slaves.is_dir(): + child_devices = tuple(sorted(item.name for item in slaves.iterdir())) + if child_devices: + return tuple(f"linux-block-{item}" for item in child_devices) + parts = resolved.parts + try: + block_index = parts.index("block") + device = parts[block_index + 1] + except (ValueError, IndexError) as exc: + raise CapturePausedError( + f"cannot map Linux volume to a physical block device: {path}" + ) from exc + return (f"linux-block-{device}",) + + +def default_volume_identity(path: Path) -> VolumeIdentity: + resolved = Path(path).resolve(strict=True) + if os.name == "nt": + return _windows_volume_identity(resolved) + devices = _linux_physical_devices(resolved) + return VolumeIdentity( + identity=f"posix-device-{os.stat(resolved).st_dev}", + physical_devices=devices, + ) + + +@dataclass(frozen=True) +class StoragePreflight: + allowed: bool + hot_identity: VolumeIdentity | None + archive_identity: VolumeIdentity | None + hot_capacity: DiskCapacity | None + archive_capacity: DiskCapacity | None + minimum_hot_free_bytes: int | None + minimum_archive_free_bytes: int | None + reasons: tuple[str, ...] + + @property + def alert(self) -> str | None: + return "CAPTURE_PAUSED: " + "; ".join(self.reasons) if self.reasons else None + + +class CaptureStorageGuard: + """Check hot and archive volumes without assuming drive letters or path aliases.""" + + def __init__( + self, + hot_root: Path, + archive_root: Path, + *, + policy: StoragePolicy = _DEFAULT_POLICY, + archive_reserve_bytes: int = 150 * _GIB, + volume_identity: VolumeIdentityProbe = default_volume_identity, + capacity_probe: CapacityProbe = default_capacity_probe, + hot_size_probe: Callable[[Path], int] | None = None, + ) -> None: + self.hot_root = Path(hot_root) + self.archive_root = Path(archive_root) + self.policy = policy + self.archive_reserve_bytes = archive_reserve_bytes + self.volume_identity = volume_identity + self.capacity_probe = capacity_probe + self.hot_size_probe = hot_size_probe or self._tree_size + + @staticmethod + def _tree_size(root: Path) -> int: + return sum(item.stat().st_size for item in root.rglob("*") if item.is_file()) + + @staticmethod + def _minimum_free(capacity: DiskCapacity, policy: StoragePolicy) -> int: + return max( + int(capacity.total_bytes * policy.minimum_free_fraction), + policy.minimum_free_bytes, + ) + + def preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: + reasons: list[str] = [] + hot_identity = archive_identity = None + hot_capacity = archive_capacity = None + minimum_hot = minimum_archive = None + for root, name in ((self.hot_root, "hot_root"), (self.archive_root, "archive_root")): + if not root.is_absolute(): + reasons.append(f"{name} must be an explicit absolute path") + elif not root.is_dir(): + reasons.append(f"{name} is missing or not a directory: {root}") + elif root.is_symlink(): + reasons.append(f"{name} cannot be a symbolic link: {root}") + if reasons: + return StoragePreflight(False, None, None, None, None, None, None, tuple(reasons)) + try: + hot_identity = self.volume_identity(self.hot_root) + archive_identity = self.volume_identity(self.archive_root) + except Exception as exc: # noqa: BLE001 - injectable OS probe must fail closed + reasons.append(f"physical volume identity unavailable: {type(exc).__name__}: {exc}") + if hot_identity and archive_identity: + overlap = sorted( + set(hot_identity.physical_devices).intersection(archive_identity.physical_devices) + ) + if overlap: + reasons.append(f"hot and archive roots share physical devices: {overlap}") + try: + hot_capacity = self.capacity_probe(self.hot_root) + archive_capacity = self.capacity_probe(self.archive_root) + minimum_hot = self._minimum_free(hot_capacity, self.policy) + minimum_archive = self._minimum_free(archive_capacity, self.policy) + hot_decision = evaluate_capacity( + self.hot_root, + projected_write_bytes=projected_hot_bytes, + policy=self.policy, + current_hot_bytes=self.hot_size_probe(self.hot_root), + disk_total_bytes=hot_capacity.total_bytes, + disk_free_bytes=hot_capacity.free_bytes, + ) + reasons.extend(hot_decision.reasons) + archive_after_reserve = archive_capacity.free_bytes - self.archive_reserve_bytes + if archive_after_reserve < minimum_archive: + reasons.append( + "archive capacity floor breached: " + f"projected={archive_after_reserve}, minimum={minimum_archive}, " + f"reserve={self.archive_reserve_bytes}" + ) + except Exception as exc: # noqa: BLE001 - injectable capacity probe must fail closed + reasons.append(f"capacity probe failed: {type(exc).__name__}: {exc}") + return StoragePreflight( + allowed=not reasons, + hot_identity=hot_identity, + archive_identity=archive_identity, + hot_capacity=hot_capacity, + archive_capacity=archive_capacity, + minimum_hot_free_bytes=minimum_hot, + minimum_archive_free_bytes=minimum_archive, + reasons=tuple(reasons), + ) + + def require_preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: + decision = self.preflight(projected_hot_bytes=projected_hot_bytes) + if not decision.allowed: + raise CapturePausedError(decision.alert or "CAPTURE_PAUSED") + return decision + + def require_hot_capacity(self, *, projected_write_bytes: int) -> None: + capacity = self.capacity_probe(self.hot_root) + decision = evaluate_capacity( + self.hot_root, + projected_write_bytes=projected_write_bytes, + policy=self.policy, + current_hot_bytes=self.hot_size_probe(self.hot_root), + disk_total_bytes=capacity.total_bytes, + disk_free_bytes=capacity.free_bytes, + ) + if not decision.allowed: + raise CapturePausedError(decision.alert or "CAPTURE_PAUSED") + + def require_archive_capacity(self, *, projected_write_bytes: int) -> None: + capacity = self.capacity_probe(self.archive_root) + minimum = self._minimum_free(capacity, self.policy) + projected = capacity.free_bytes - projected_write_bytes + if projected < minimum: + raise CapturePausedError( + "CAPTURE_PAUSED: archive free-space floor breached: " + f"projected={projected}, minimum={minimum}" + ) + + +@dataclass(frozen=True) +class RawSegment: + stream_id: str + segment_index: int + raw_manifest: RawObjectManifest + message_count: int + wire_byte_count: int + first_received_at: str + last_received_at: str + first_event_time: str | None + last_event_time: str | None + native_sequence_range: Mapping[str, tuple[int, int]] + previous_segment_manifest_sha256: str | None + + +class RawSegmentWriter: + """Batch exact Raw frames and publish each segment through the existing Raw contract.""" + + def __init__( + self, + hot_root: Path, + stream_id: str, + source: str, + *, + collector_commit: str, + rotation: SegmentRotation, + storage_guard: CaptureStorageGuard, + policy: StoragePolicy = _DEFAULT_POLICY, + ) -> None: + self.hot_root = Path(hot_root) + self.stream_id = stream_id + self.source = source + self.collector_commit = collector_commit + self.rotation = rotation + self.storage_guard = storage_guard + self.policy = policy + self._records: list[bytes] = [] + self._frames: list[RawFrame] = [] + self._wire_bytes = 0 + self._segment_index = 0 + self._previous_manifest_sha256: str | None = None + self._completed: list[RawSegment] = [] + + @property + def pending_messages(self) -> int: + return len(self._frames) + + @property + def segment_count(self) -> int: + return self._segment_index + + def append(self, frame: RawFrame) -> None: + if frame.stream_id != self.stream_id or frame.provider != self.source: + raise ValidationError("Raw frame identity does not match segment writer") + if self._frames and frame.received_at < self._frames[-1].received_at: + raise ValidationError("Raw frame received_at order regressed") + encoded = canonical_json_bytes(frame.record()) + b"\n" + self.storage_guard.require_hot_capacity(projected_write_bytes=len(encoded)) + if self._frames: + age = (frame.received_at - self._frames[0].received_at).total_seconds() + if age >= self.rotation.max_age_seconds: + self.flush() + self._frames.append(frame) + self._records.append(encoded) + self._wire_bytes += len(frame.payload) + if ( + len(self._frames) >= self.rotation.max_messages + or self._wire_bytes >= self.rotation.max_wire_bytes + ): + self.flush() + + def drain_completed(self) -> tuple[RawSegment, ...]: + completed = tuple(self._completed) + self._completed.clear() + return completed + + def flush(self) -> RawSegment | None: + if not self._frames: + return None + payload = b"".join(self._records) + self.storage_guard.require_hot_capacity(projected_write_bytes=len(payload) + 4096) + sequence_range: dict[str, tuple[int, int]] = {} + for frame in self._frames: + for name, value in frame.native_sequence.items(): + previous = sequence_range.get(name) + sequence_range[name] = ( + value if previous is None else min(previous[0], value), + value if previous is None else max(previous[1], value), + ) + event_times = [frame.event_time for frame in self._frames if frame.event_time is not None] + first = self._frames[0] + last = self._frames[-1] + body_hash = hashlib.sha256(payload).hexdigest() + segment_number = self._segment_index + 1 + request = { + "schema_version": "puresaber.raw-segment-request@1.0.0", + "source": self.source, + "stream_id": self.stream_id, + "segment_index": segment_number, + "message_count": len(self._frames), + "wire_byte_count": self._wire_bytes, + "first_received_at": utc_text(first.received_at, "first_received_at"), + "last_received_at": utc_text(last.received_at, "last_received_at"), + "first_event_time": ( + utc_text(min(event_times), "first_event_time") if event_times else None + ), + "last_event_time": ( + utc_text(max(event_times), "last_event_time") if event_times else None + ), + "native_sequence_range": { + key: list(value) for key, value in sorted(sequence_range.items()) + }, + "payload_format": "canonical-json-lines+base64-exact-wire-bytes", + "payload_sha256": body_hash, + "collector_commit": self.collector_commit, + "previous_segment_manifest_sha256": self._previous_manifest_sha256, + } + safe_stream_hash = hashlib.sha256(self.stream_id.encode("utf-8")).hexdigest()[:12] + key = f"seg-{safe_stream_hash}-{segment_number:012d}-{body_hash[:16]}" + raw = write_raw_bytes( + self.hot_root, + source=self.source, + request=request, + collected_at=first.received_at, + payload=payload, + idempotency_key=key, + policy=self.policy, + ) + segment = RawSegment( + stream_id=self.stream_id, + segment_index=segment_number, + raw_manifest=raw, + message_count=len(self._frames), + wire_byte_count=self._wire_bytes, + first_received_at=request["first_received_at"], + last_received_at=request["last_received_at"], + first_event_time=request["first_event_time"], + last_event_time=request["last_event_time"], + native_sequence_range=MappingProxyType(sequence_range), + previous_segment_manifest_sha256=self._previous_manifest_sha256, + ) + self._segment_index = segment_number + self._previous_manifest_sha256 = raw.manifest_sha256 + self._records.clear() + self._frames.clear() + self._wire_bytes = 0 + self._completed.append(segment) + return segment + + +@dataclass(frozen=True) +class ArchivePreflightReceipt: + schema_version: str + verified_at: str + hot_identity: VolumeIdentity + archive_identity: VolumeIdentity + probe_sha256: str + restored_sha256: str + receipt_path: str + + +@dataclass(frozen=True) +class SegmentArchiveReceipt: + schema_version: str + object_id: str + stream_id: str + archive_directory: str + source_content_sha256: str + archive_content_sha256: str + source_manifest_sha256: str + archive_manifest_file_sha256: str + restored_content_sha256: str + restored_manifest_file_sha256: str + hot_volume_identity: str + archive_volume_identity: str + hot_physical_devices: tuple[str, ...] + archive_physical_devices: tuple[str, ...] + verified_at: str + archive_restore_verified: bool + eligible_for_cleanup: bool + cleanup_performed: bool + receipt_sha256: str + + +def _sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _atomic_immutable_write(path: Path, body: bytes) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + if path.exists(): + if path.is_file() and path.read_bytes() == body: + return + raise ValidationError(f"immutable archive path already contains different bytes: {path}") + temporary = path.with_name(f".{path.name}.{uuid.uuid4().hex}.tmp") + try: + with temporary.open("xb") as stream: + stream.write(body) + stream.flush() + os.fsync(stream.fileno()) + os.replace(temporary, path) + finally: + if temporary.exists(): + temporary.unlink() + + +class LocalArchiveController: + """Copy, hash, restore, and mark Raw segments without deleting hot data.""" + + def __init__( + self, + hot_root: Path, + archive_root: Path, + restore_root: Path, + *, + storage_guard: CaptureStorageGuard, + clock: Callable[[], datetime] = lambda: datetime.now(tz=UTC), + ) -> None: + self.hot_root = Path(hot_root) + self.archive_root = Path(archive_root) + self.restore_root = Path(restore_root) + self.storage_guard = storage_guard + self.clock = clock + + def preflight(self) -> ArchivePreflightReceipt: + decision = self.storage_guard.require_preflight(projected_hot_bytes=4096) + if not self.restore_root.is_absolute() or not self.restore_root.is_dir(): + raise CapturePausedError( + f"CAPTURE_PAUSED: restore_root is missing or not absolute: {self.restore_root}" + ) + assert decision.hot_identity is not None and decision.archive_identity is not None + verified_at = utc_text(self.clock(), "archive preflight clock") + probe_payload = canonical_json_bytes( + { + "schema_version": "puresaber.archive-preflight-probe@1.0.0", + "verified_at": verified_at, + "hot_identity": asdict(decision.hot_identity), + "archive_identity": asdict(decision.archive_identity), + } + ) + probe_hash = hashlib.sha256(probe_payload).hexdigest() + self.storage_guard.require_archive_capacity(projected_write_bytes=len(probe_payload) + 4096) + archive_probe = self.archive_root / "preflight" / f"sha256-{probe_hash}.bin" + _atomic_immutable_write(archive_probe, probe_payload) + restore_dir = Path(tempfile.mkdtemp(prefix="qdk-archive-preflight-", dir=self.restore_root)) + try: + restored = restore_dir / "probe.bin" + shutil.copy2(archive_probe, restored) + restored_hash = _sha256_file(restored) + finally: + shutil.rmtree(restore_dir) + if restored_hash != probe_hash: + raise CapturePausedError("CAPTURE_PAUSED: archive preflight restore hash mismatch") + receipt_payload = { + "schema_version": "puresaber.archive-preflight-receipt@1.0.0", + "verified_at": verified_at, + "hot_identity": asdict(decision.hot_identity), + "archive_identity": asdict(decision.archive_identity), + "probe_sha256": probe_hash, + "restored_sha256": restored_hash, + } + receipt_path = self.hot_root / "capture" / "archive-preflight" / f"{probe_hash}.json" + _atomic_immutable_write(receipt_path, canonical_json_bytes(receipt_payload)) + return ArchivePreflightReceipt( + schema_version=receipt_payload["schema_version"], + verified_at=verified_at, + hot_identity=decision.hot_identity, + archive_identity=decision.archive_identity, + probe_sha256=probe_hash, + restored_sha256=restored_hash, + receipt_path=str(receipt_path), + ) + + def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: + decision = self.storage_guard.require_preflight(projected_hot_bytes=4096) + assert decision.hot_identity is not None and decision.archive_identity is not None + raw, payload = load_raw_object(self.hot_root, segment.raw_manifest.reference()) + source_dir = self._hot_object_dir(raw) + source_manifest_path = source_dir / "manifest.json" + source_manifest_file_hash = _sha256_file(source_manifest_path) + projected = len(payload) + source_manifest_path.stat().st_size + 8192 + self.storage_guard.require_archive_capacity(projected_write_bytes=projected) + destination = ( + self.archive_root + / "raw-segments" + / f"source={raw.source}" + / f"date={raw.collection_date}" + / f"object={raw.object_id}" + ) + _atomic_immutable_write(destination / raw.data_path, payload) + _atomic_immutable_write(destination / "manifest.json", source_manifest_path.read_bytes()) + archive_content_hash = _sha256_file(destination / raw.data_path) + archive_manifest_hash = _sha256_file(destination / "manifest.json") + restore_dir = Path(tempfile.mkdtemp(prefix="qdk-segment-restore-", dir=self.restore_root)) + try: + restored_payload = restore_dir / raw.data_path + restored_manifest = restore_dir / "manifest.json" + shutil.copy2(destination / raw.data_path, restored_payload) + shutil.copy2(destination / "manifest.json", restored_manifest) + restored_content_hash = _sha256_file(restored_payload) + restored_manifest_hash = _sha256_file(restored_manifest) + restored_model = RawObjectManifest( + **json.loads(restored_manifest.read_text(encoding="utf-8")) + ) + except (OSError, TypeError, json.JSONDecodeError) as exc: + raise CapturePausedError( + f"CAPTURE_PAUSED: archive restore validation failed: {type(exc).__name__}: {exc}" + ) from exc + finally: + shutil.rmtree(restore_dir) + expected = ( + raw.content_sha256, + raw.content_sha256, + source_manifest_file_hash, + source_manifest_file_hash, + ) + actual = ( + archive_content_hash, + restored_content_hash, + archive_manifest_hash, + restored_manifest_hash, + ) + if actual != expected or restored_model != raw: + raise CapturePausedError("CAPTURE_PAUSED: archive or restore hash validation failed") + identity = { + "schema_version": "puresaber.segment-archive-receipt@1.0.0", + "object_id": raw.object_id, + "stream_id": segment.stream_id, + "archive_directory": str(destination), + "source_content_sha256": raw.content_sha256, + "archive_content_sha256": archive_content_hash, + "source_manifest_sha256": raw.manifest_sha256, + "archive_manifest_file_sha256": archive_manifest_hash, + "restored_content_sha256": restored_content_hash, + "restored_manifest_file_sha256": restored_manifest_hash, + "hot_volume_identity": decision.hot_identity.identity, + "archive_volume_identity": decision.archive_identity.identity, + "hot_physical_devices": list(decision.hot_identity.physical_devices), + "archive_physical_devices": list(decision.archive_identity.physical_devices), + "verified_at": utc_text(self.clock(), "archive verified_at"), + "archive_restore_verified": True, + "eligible_for_cleanup": True, + "cleanup_performed": False, + } + receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + receipt_payload = {**identity, "receipt_sha256": receipt_hash} + receipt_path = ( + self.hot_root + / "capture" + / "archive-receipts" + / (f"object={raw.object_id}-receipt={receipt_hash}.json") + ) + _atomic_immutable_write(receipt_path, canonical_json_bytes(receipt_payload)) + return SegmentArchiveReceipt( + **{ + **receipt_payload, + "hot_physical_devices": tuple(identity["hot_physical_devices"]), + "archive_physical_devices": tuple(identity["archive_physical_devices"]), + } + ) + + def _hot_object_dir(self, raw: RawObjectManifest) -> Path: + path = ( + self.hot_root + / "raw" + / f"source={raw.source}" + / f"date={raw.collection_date}" + / f"key={raw.idempotency_key}" + / f"object={raw.object_id}" + ) + resolved = path.resolve(strict=True) + try: + resolved.relative_to(self.hot_root.resolve(strict=True)) + except ValueError as exc: + raise ValidationError("Raw object path escaped the hot root") from exc + return resolved + + +def iter_segment_frames(hot_root: Path, segment: RawSegment) -> Iterable[RawFrame]: + _, payload = load_raw_object(hot_root, segment.raw_manifest.reference()) + for line_number, line in enumerate(payload.splitlines(), start=1): + if not line: + continue + try: + record = json.loads(line) + except (UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError(f"Raw segment line {line_number} is malformed") from exc + yield RawFrame.from_record(record) diff --git a/src/quant_data_kit/capture_v2/synchronizers.py b/src/quant_data_kit/capture_v2/synchronizers.py new file mode 100644 index 0000000..29daf72 --- /dev/null +++ b/src/quant_data_kit/capture_v2/synchronizers.py @@ -0,0 +1,502 @@ +"""Provider-specific live book synchronization above the frozen v2 adapters.""" + +from __future__ import annotations + +import json +import math +from collections.abc import Mapping +from copy import deepcopy +from dataclasses import dataclass +from datetime import datetime +from decimal import Decimal, InvalidOperation +from typing import Any + +from quant_data_kit.adapters_v2 import ( + AdapterContext, + AdapterInstrument, + BinanceFixtureAdapter, + OKXFixtureAdapter, +) +from quant_data_kit.capture_v2.models import ( + MarketKind, + RawFrame, + StreamConfig, + SymbolMappingResolver, +) +from quant_data_kit.exceptions import ValidationError + + +class ResyncRequired(ValidationError): + """A transport or sequence discontinuity that invalidates the local book.""" + + +@dataclass(frozen=True) +class Observation: + event: str + reason: str + details: Mapping[str, Any] + + +@dataclass(frozen=True) +class NormalizationOutcome: + records: tuple[dict[str, Any], ...] = () + observations: tuple[Observation, ...] = () + snapshot_admitted: bool = False + + +def _json_object(payload: bytes, provider: str) -> dict[str, Any]: + try: + value = json.loads(payload) + except (UnicodeError, json.JSONDecodeError) as exc: + raise ResyncRequired(f"{provider} message is not valid JSON") from exc + if not isinstance(value, dict): + raise ResyncRequired(f"{provider} message must be a JSON object") + if provider == "binance" and isinstance(value.get("data"), dict): + value = dict(value["data"]) + return value + + +def _received_milliseconds(received_at: datetime) -> int: + """Round upward so Normalized available_at is never earlier than local receipt.""" + return math.ceil(received_at.timestamp() * 1000) + + +def _provider_event_milliseconds(message: Mapping[str, Any], *fields: str) -> int: + for field in fields: + value = message.get(field) + if value is not None: + try: + return int(value) + except (TypeError, ValueError) as exc: + raise ResyncRequired(f"provider event time {field} must be milliseconds") from exc + raise ResyncRequired(f"provider event time is missing; expected one of {fields}") + + +def _utc_event_datetime(milliseconds: int) -> datetime: + from datetime import timezone + + try: + return datetime.fromtimestamp(milliseconds / 1000, tz=timezone.utc) + except (OSError, OverflowError, ValueError) as exc: + raise ResyncRequired("provider event time is outside supported range") from exc + + +def _price(value: Any, field_name: str) -> Decimal: + try: + result = Decimal(str(value)) + except (InvalidOperation, ValueError) as exc: + raise ResyncRequired(f"{field_name} is not a decimal price") from exc + if not result.is_finite() or result <= 0: + raise ResyncRequired(f"{field_name} must be a finite positive price") + return result + + +def _quantity(value: Any, field_name: str) -> Decimal: + try: + result = Decimal(str(value)) + except (InvalidOperation, ValueError) as exc: + raise ResyncRequired(f"{field_name} is not a decimal quantity") from exc + if not result.is_finite() or result < 0: + raise ResyncRequired(f"{field_name} must be a finite non-negative quantity") + return result + + +class _TrackedBook: + def __init__(self) -> None: + self.bids: dict[Decimal, str] = {} + self.asks: dict[Decimal, str] = {} + + def snapshot(self, bids: list[Any], asks: list[Any]) -> None: + staged_bids = self._snapshot_side(bids, "bids") + staged_asks = self._snapshot_side(asks, "asks") + if staged_bids and staged_asks and max(staged_bids) >= min(staged_asks): + raise ResyncRequired("provider snapshot is crossed or locked") + self.bids, self.asks = staged_bids, staged_asks + + @staticmethod + def _snapshot_side(levels: list[Any], field_name: str) -> dict[Decimal, str]: + result: dict[Decimal, str] = {} + for index, item in enumerate(levels): + if not isinstance(item, list) or len(item) < 2: + raise ResyncRequired(f"{field_name}[{index}] must be a price/quantity level") + price = _price(item[0], f"{field_name}[{index}].price") + quantity = _quantity(item[1], f"{field_name}[{index}].quantity") + if quantity == 0: + raise ResyncRequired("provider snapshot cannot contain zero quantity") + if price in result: + raise ResyncRequired(f"{field_name} contains duplicate prices") + result[price] = str(item[1]) + return result + + def filter_delta( + self, + bids: list[Any], + asks: list[Any], + ) -> tuple[ + list[Any], list[Any], tuple[Observation, ...], dict[Decimal, str], dict[Decimal, str] + ]: + staged_bids = dict(self.bids) + staged_asks = dict(self.asks) + observations: list[Observation] = [] + kept_bids = self._filter_side(bids, staged_bids, "bid", observations) + kept_asks = self._filter_side(asks, staged_asks, "ask", observations) + if staged_bids and staged_asks and max(staged_bids) >= min(staged_asks): + raise ResyncRequired("provider delta would cross or lock the local book") + return kept_bids, kept_asks, tuple(observations), staged_bids, staged_asks + + @staticmethod + def _filter_side( + levels: list[Any], + staged: dict[Decimal, str], + side: str, + observations: list[Observation], + ) -> list[Any]: + kept: list[Any] = [] + seen: set[Decimal] = set() + for index, item in enumerate(levels): + if not isinstance(item, list) or len(item) < 2: + raise ResyncRequired(f"{side}[{index}] must be a price/quantity level") + price = _price(item[0], f"{side}[{index}].price") + quantity = _quantity(item[1], f"{side}[{index}].quantity") + if price in seen: + raise ResyncRequired(f"{side} delta contains duplicate prices") + seen.add(price) + if quantity == 0: + if price not in staged: + observations.append( + Observation( + event="absent_level_delete", + reason="provider documents this as a normal no-op", + details={"side": side, "price": str(item[0])}, + ) + ) + continue + staged.pop(price) + else: + staged[price] = str(item[1]) + kept.append(item) + return kept + + def commit(self, bids: dict[Decimal, str], asks: dict[Decimal, str]) -> None: + self.bids, self.asks = bids, asks + + +class BinanceBookSynchronizer: + """Bridge buffered Binance WS updates to an HTTPS snapshot and strict v2 events.""" + + def __init__(self, stream: StreamConfig, mappings: SymbolMappingResolver) -> None: + if stream.provider.value != "binance": + raise ValidationError("BinanceBookSynchronizer requires a Binance stream") + self.stream = stream + self.mappings = mappings + self.adapter = BinanceFixtureAdapter( + AdapterContext( + provider="binance", + venue=stream.venue, + instruments={ + stream.native_symbol: AdapterInstrument( + stream.instrument_id, stream.price_scale, stream.quantity_scale + ) + }, + ), + event_id_namespace=stream.instrument_id, + ) + self.book = _TrackedBook() + self._snapshot_id: int | None = None + self._last_update_id: int | None = None + self._bridged = False + + @property + def live(self) -> bool: + return self._bridged + + def admit_snapshot(self, frame: RawFrame) -> NormalizationOutcome: + message = _json_object(frame.payload, "binance") + try: + snapshot_id = int(message["lastUpdateId"]) + bids, asks = list(message["bids"]), list(message["asks"]) + except (KeyError, TypeError, ValueError) as exc: + raise ResyncRequired("Binance REST snapshot is malformed") from exc + self.book.snapshot(bids, asks) + received_ms = _received_milliseconds(frame.received_at) + event_time = frame.event_time or frame.received_at + event_ms = _received_milliseconds(event_time) + self._assert_mapping(event_time, frame.received_at) + canonical = { + "e": "depthSnapshot", + "s": self.stream.native_symbol, + "E": event_ms, + "T": event_ms, + "received_at": received_ms, + "lastUpdateId": snapshot_id, + "bids": bids, + "asks": asks, + } + records = self.adapter.adapt(canonical) + self._snapshot_id = snapshot_id + self._last_update_id = snapshot_id + self._bridged = False + return NormalizationOutcome(records=tuple(records), snapshot_admitted=True) + + def admit_update(self, frame: RawFrame) -> NormalizationOutcome: + if self._snapshot_id is None or self._last_update_id is None: + raise ResyncRequired("Binance update arrived before REST snapshot admission") + message = _json_object(frame.payload, "binance") + if message.get("e") != "depthUpdate" or str(message.get("s")) != self.stream.native_symbol: + raise ResyncRequired("Binance stream delivered an unexpected event or symbol") + try: + first_update = int(message["U"]) + final_update = int(message["u"]) + except (KeyError, TypeError, ValueError) as exc: + raise ResyncRequired("Binance update IDs are malformed") from exc + if final_update < first_update: + raise ResyncRequired("Binance update range is reversed") + if not self._bridged: + if final_update <= self._snapshot_id: + return NormalizationOutcome( + observations=( + Observation( + event="stale_buffered_update", + reason="u<=lastUpdateId", + details={ + "U": first_update, + "u": final_update, + "lastUpdateId": self._snapshot_id, + }, + ), + ) + ) + if not first_update <= self._snapshot_id <= final_update: + raise ResyncRequired( + "Binance buffered stream did not bridge REST lastUpdateId: " + f"U={first_update}, lastUpdateId={self._snapshot_id}, u={final_update}" + ) + provider_previous = self._snapshot_id + else: + if final_update <= self._last_update_id: + return NormalizationOutcome( + observations=( + Observation( + event="duplicate_or_old_update", + reason="u<=previous_u", + details={"u": final_update, "previous_u": self._last_update_id}, + ), + ) + ) + if self.stream.market is MarketKind.USDT_PERPETUAL: + try: + previous_update = int(message["pu"]) + except (KeyError, TypeError, ValueError) as exc: + raise ResyncRequired("Binance USD-M update is missing pu") from exc + if previous_update != self._last_update_id: + raise ResyncRequired( + "Binance USD-M pu chain broke: " + f"expected={self._last_update_id}, actual={previous_update}" + ) + elif not first_update <= self._last_update_id + 1 <= final_update: + raise ResyncRequired( + "Binance Spot update IDs are discontinuous: " + f"U={first_update}, previous_u={self._last_update_id}, u={final_update}" + ) + provider_previous = self._last_update_id + event_ms = _provider_event_milliseconds(message, "T", "E") + event_time = _utc_event_datetime(event_ms) + self._assert_mapping(event_time, frame.received_at) + bids = list(message.get("b", [])) + asks = list(message.get("a", [])) + kept_bids, kept_asks, observations, staged_bids, staged_asks = self.book.filter_delta( + bids, asks + ) + canonical = deepcopy(message) + canonical.update( + { + "e": "depthUpdate", + "s": self.stream.native_symbol, + "pu": provider_previous, + "b": kept_bids, + "a": kept_asks, + "received_at": _received_milliseconds(frame.received_at), + } + ) + try: + records = self.adapter.adapt(canonical) + except ValidationError as exc: + raise ResyncRequired(f"Binance Normalized bridge rejected update: {exc}") from exc + self.book.commit(staged_bids, staged_asks) + self._last_update_id = final_update + self._bridged = True + return NormalizationOutcome(records=tuple(records), observations=observations) + + def _assert_mapping(self, event_time: datetime, known_at: datetime) -> None: + try: + instrument_id = self.mappings.resolve( + self.stream.mapping_source, + self.stream.native_symbol, + event_time=event_time, + known_at=known_at, + ) + except ValidationError as exc: + raise ResyncRequired(f"Binance SymbolMapping resolution failed: {exc}") from exc + if instrument_id != self.stream.instrument_id: + raise ResyncRequired("Binance SymbolMapping disagrees with stream instrument_id") + + +class OKXBookSynchronizer: + """Apply current OKX books semantics: sequence continuity, no JSON checksum proof.""" + + def __init__(self, stream: StreamConfig, mappings: SymbolMappingResolver) -> None: + if stream.provider.value != "okx": + raise ValidationError("OKXBookSynchronizer requires an OKX stream") + self.stream = stream + self.mappings = mappings + self.adapter = OKXFixtureAdapter( + AdapterContext( + provider="okx", + venue=stream.venue, + instruments={ + stream.native_symbol: AdapterInstrument( + stream.instrument_id, stream.price_scale, stream.quantity_scale + ) + }, + ) + ) + self.book = _TrackedBook() + self._last_sequence: int | None = None + + @property + def live(self) -> bool: + return self._last_sequence is not None + + def admit_message(self, frame: RawFrame) -> NormalizationOutcome: + envelope = _json_object(frame.payload, "okx") + if "event" in envelope: + event = str(envelope.get("event")) + if event == "error": + raise ResyncRequired( + f"OKX subscription error: {envelope.get('code')}:{envelope.get('msg')}" + ) + return NormalizationOutcome( + observations=( + Observation( + event="subscription_control", + reason=event, + details={"code": envelope.get("code"), "msg": envelope.get("msg")}, + ), + ) + ) + arg = envelope.get("arg") + data = envelope.get("data") + action = str(envelope.get("action", "")) + if not isinstance(arg, dict) or not isinstance(data, list): + raise ResyncRequired("OKX books envelope is malformed") + if ( + arg.get("channel") != self.stream.channel + or arg.get("instId") != self.stream.native_symbol + ): + raise ResyncRequired("OKX stream delivered an unexpected channel or symbol") + all_records: list[dict[str, Any]] = [] + observations: list[Observation] = [] + snapshot_admitted = False + for item in data: + if not isinstance(item, dict): + raise ResyncRequired("OKX books data item must be an object") + outcome = self._admit_item(action, item, frame) + all_records.extend(outcome.records) + observations.extend(outcome.observations) + snapshot_admitted = snapshot_admitted or outcome.snapshot_admitted + return NormalizationOutcome(tuple(all_records), tuple(observations), snapshot_admitted) + + def _admit_item( + self, + action: str, + item: Mapping[str, Any], + frame: RawFrame, + ) -> NormalizationOutcome: + if action not in {"snapshot", "update"}: + raise ResyncRequired(f"OKX books action is unsupported: {action!r}") + try: + sequence = int(item["seqId"]) + previous = int(item.get("prevSeqId", -1)) + event_ms = int(item["ts"]) + bids, asks = list(item.get("bids", [])), list(item.get("asks", [])) + except (KeyError, TypeError, ValueError) as exc: + raise ResyncRequired("OKX books sequence or timestamp is malformed") from exc + event_time = _utc_event_datetime(event_ms) + try: + instrument_id = self.mappings.resolve( + self.stream.mapping_source, + self.stream.native_symbol, + event_time=event_time, + known_at=frame.received_at, + ) + except ValidationError as exc: + raise ResyncRequired(f"OKX SymbolMapping resolution failed: {exc}") from exc + if instrument_id != self.stream.instrument_id: + raise ResyncRequired("OKX SymbolMapping disagrees with stream instrument_id") + canonical = { + **dict(item), + "channel": self.stream.channel, + "instId": self.stream.native_symbol, + "action": action, + "received_at": _received_milliseconds(frame.received_at), + "checksum": 0, + } + checksum_observation = () + if item.get("checksum") not in (None, 0, "0"): + checksum_observation = ( + Observation( + event="deprecated_checksum_ignored", + reason="OKX 2026 JSON checksum is not an integrity proof", + details={"received_checksum": item.get("checksum")}, + ), + ) + if action == "snapshot": + self.book.snapshot(bids, asks) + try: + records = self.adapter.adapt(canonical) + except ValidationError as exc: + raise ResyncRequired(f"OKX Normalized bridge rejected snapshot: {exc}") from exc + self._last_sequence = sequence + return NormalizationOutcome(tuple(records), checksum_observation, True) + if self._last_sequence is None: + raise ResyncRequired("OKX update arrived before a fresh books snapshot") + if sequence < previous: + try: + self.adapter.adapt(canonical) + except ValidationError: + pass + self._last_sequence = None + raise ResyncRequired("OKX maintenance sequence reset requires a fresh snapshot") + if previous != self._last_sequence: + raise ResyncRequired( + "OKX prevSeqId chain broke: " + f"expected={self._last_sequence}, actual={previous}, seqId={sequence}" + ) + if sequence == previous: + if bids or asks: + raise ResyncRequired("OKX equal-sequence heartbeat contained book levels") + try: + records = self.adapter.adapt(canonical) + except ValidationError as exc: + raise ResyncRequired(f"OKX heartbeat was rejected: {exc}") from exc + return NormalizationOutcome( + tuple(records), + checksum_observation + + ( + Observation( + event="book_heartbeat", + reason="empty asks/bids with seqId==prevSeqId", + details={"seqId": sequence}, + ), + ), + ) + kept_bids, kept_asks, absent, staged_bids, staged_asks = self.book.filter_delta(bids, asks) + canonical["bids"] = kept_bids + canonical["asks"] = kept_asks + try: + records = self.adapter.adapt(canonical) + except ValidationError as exc: + raise ResyncRequired(f"OKX Normalized bridge rejected update: {exc}") from exc + self.book.commit(staged_bids, staged_asks) + self._last_sequence = sequence + return NormalizationOutcome(tuple(records), checksum_observation + absent) diff --git a/src/quant_data_kit/capture_v2/transport.py b/src/quant_data_kit/capture_v2/transport.py new file mode 100644 index 0000000..e1c4ef5 --- /dev/null +++ b/src/quant_data_kit/capture_v2/transport.py @@ -0,0 +1,116 @@ +"""Injectable public HTTP/WebSocket transports for deterministic capture tests.""" + +from __future__ import annotations + +import asyncio +import urllib.error +import urllib.request +from dataclasses import dataclass +from typing import Protocol + +from quant_data_kit.exceptions import ProviderError, ValidationError + + +@dataclass(frozen=True) +class HttpResponse: + url: str + status: int + body: bytes + + +class HttpClient(Protocol): + async def get(self, url: str, *, timeout_seconds: float) -> HttpResponse: ... + + +class WebSocketConnection(Protocol): + async def send(self, payload: bytes) -> None: ... + + async def receive(self, *, timeout_seconds: float) -> bytes: ... + + async def close(self) -> None: ... + + +class WebSocketConnector(Protocol): + async def connect(self, url: str, *, timeout_seconds: float) -> WebSocketConnection: ... + + +class UrllibHttpClient: + """Small public GET client that preserves exact response bytes and sends no credentials.""" + + async def get(self, url: str, *, timeout_seconds: float) -> HttpResponse: + if not url.startswith("https://"): + raise ValidationError("public snapshot HTTP transport must use https://") + return await asyncio.to_thread(self._get, url, timeout_seconds) + + @staticmethod + def _get(url: str, timeout_seconds: float) -> HttpResponse: + request = urllib.request.Request( + url, + method="GET", + headers={"User-Agent": "quant-data-kit-public-market-capture/0.7"}, + ) + try: + with urllib.request.urlopen(request, timeout=timeout_seconds) as response: + body = response.read() + status = int(getattr(response, "status", 200)) + final_url = str(response.geturl()) + except (OSError, urllib.error.URLError) as exc: + raise ProviderError( + f"public HTTPS snapshot failed: {type(exc).__name__}: {exc}" + ) from exc + if status != 200: + raise ProviderError(f"public HTTPS snapshot returned status={status}") + if not final_url.startswith("https://"): + raise ProviderError("public HTTPS snapshot redirected to a non-TLS URL") + return HttpResponse(url=final_url, status=status, body=body) + + +class _WebsocketsConnection: + def __init__(self, connection: object) -> None: + self._connection = connection + + async def send(self, payload: bytes) -> None: + await self._connection.send(payload) # type: ignore[attr-defined] + + async def receive(self, *, timeout_seconds: float) -> bytes: + try: + payload = await asyncio.wait_for( + self._connection.recv(), # type: ignore[attr-defined] + timeout=timeout_seconds, + ) + except asyncio.TimeoutError as exc: + raise ProviderError("public WebSocket receive timed out") from exc + if isinstance(payload, str): + return payload.encode("utf-8") + if isinstance(payload, bytes): + return payload + raise ProviderError( + f"public WebSocket returned unsupported payload: {type(payload).__name__}" + ) + + async def close(self) -> None: + await self._connection.close() # type: ignore[attr-defined] + + +class WebsocketsConnector: + """TLS-only adapter for the pinned websockets dependency.""" + + async def connect(self, url: str, *, timeout_seconds: float) -> WebSocketConnection: + if not url.startswith("wss://"): + raise ValidationError("public market-data WebSocket must use wss://") + try: + from websockets.asyncio.client import connect + + connection = await connect( + url, + open_timeout=timeout_seconds, + close_timeout=timeout_seconds, + max_size=16 * 1024 * 1024, + ping_interval=20, + ping_timeout=20, + ) + except Exception as exc: + raise ProviderError( + f"public WebSocket connection failed: {type(exc).__name__}: {exc}" + ) from exc + return _WebsocketsConnection(connection) diff --git a/tests/test_capture_v2_collector_cli_transport.py b/tests/test_capture_v2_collector_cli_transport.py new file mode 100644 index 0000000..45052ba --- /dev/null +++ b/tests/test_capture_v2_collector_cli_transport.py @@ -0,0 +1,727 @@ +from __future__ import annotations + +import asyncio +import json +import urllib.error +from dataclasses import dataclass +from datetime import datetime, timedelta, timezone +from pathlib import Path +from typing import Any + +import pytest + +from quant_data_kit.capture_v2.cli import load_capture_config, main_capture +from quant_data_kit.capture_v2.collector import ( + CaptureStreamRunner, + CryptoL2CaptureCoordinator, + NormalizationOutcome, + _frame_metadata, +) +from quant_data_kit.capture_v2.models import ( + CaptureConfig, + CaptureState, + MarketKind, + Provider, + RetryPolicy, + SegmentRotation, + SymbolMappingResolver, + default_crypto_l2_streams, + default_symbol_mappings, +) +from quant_data_kit.capture_v2.storage import ( + CapturePausedError, + CaptureStorageGuard, + DiskCapacity, + LocalArchiveController, + VolumeIdentity, +) +from quant_data_kit.capture_v2.synchronizers import ResyncRequired +from quant_data_kit.capture_v2.transport import ( + HttpResponse, + UrllibHttpClient, + WebsocketsConnector, + _WebsocketsConnection, +) +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.exceptions import ProviderError, ValidationError + +UTC = timezone.utc +NOW = datetime(2026, 8, 29, 2, 0, tzinfo=UTC) +NOW_MS = int(NOW.timestamp() * 1000) +POLICY = StoragePolicy( + hot_quota_bytes=1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, +) + + +class FakeClock: + def __init__(self) -> None: + self.current = NOW + self.sleeps: list[float] = [] + + def now(self) -> datetime: + value = self.current + self.current += timedelta(milliseconds=1) + return value + + async def sleep(self, seconds: float) -> None: + self.sleeps.append(seconds) + self.current += timedelta(seconds=seconds) + + +class FakeConnection: + def __init__(self, stream) -> None: + self.stream = stream + self.messages = messages_for(stream) + self.sent: list[bytes] = [] + self.closed = False + + async def send(self, payload: bytes) -> None: + self.sent.append(payload) + + async def receive(self, *, timeout_seconds: float) -> bytes: + assert timeout_seconds > 0 + if not self.messages: + raise ProviderError("injected disconnect") + return self.messages.pop(0) + + async def close(self) -> None: + self.closed = True + + +class FakeConnector: + def __init__(self, streams) -> None: + self.streams = tuple(streams) + self.calls: list[str] = [] + self.connections: list[FakeConnection] = [] + self.unassigned = list(self.streams) + + async def connect(self, url: str, *, timeout_seconds: float) -> FakeConnection: + assert timeout_seconds > 0 + self.calls.append(url) + stream = next(item for item in self.unassigned if item.websocket_url == url) + self.unassigned.remove(stream) + connection = FakeConnection(stream) + self.connections.append(connection) + return connection + + +class FailedConnector: + def __init__(self) -> None: + self.calls = 0 + + async def connect(self, url: str, *, timeout_seconds: float): + self.calls += 1 + raise ProviderError(f"injected connect failure: {url}:{timeout_seconds}") + + +class FakeHttp: + def __init__(self) -> None: + self.calls: list[str] = [] + + async def get(self, url: str, *, timeout_seconds: float) -> HttpResponse: + assert timeout_seconds > 0 + self.calls.append(url) + body = json.dumps( + {"lastUpdateId": 100, "bids": [["100", "2"]], "asks": [["101", "3"]]} + ).encode() + return HttpResponse(url=url, status=200, body=body) + + +def messages_for(stream) -> list[bytes]: + if stream.provider is Provider.BINANCE: + values = [] + for index, (first, final) in enumerate(((99, 101), (102, 102), (103, 103))): + payload = { + "e": "depthUpdate", + "E": NOW_MS + index, + "T": NOW_MS + index, + "s": stream.native_symbol, + "U": first, + "u": final, + "b": [["100", str(2.1 + index)]], + "a": [], + } + if stream.market is MarketKind.USDT_PERPETUAL: + payload["pu"] = 100 if index == 0 else final - 1 + values.append(json.dumps(payload).encode()) + return values + return [ + json.dumps( + { + "event": "subscribe", + "arg": {"channel": "books", "instId": stream.native_symbol}, + "code": "0", + "msg": "", + } + ).encode(), + json.dumps( + { + "arg": {"channel": "books", "instId": stream.native_symbol}, + "action": "snapshot", + "data": [ + { + "ts": str(NOW_MS), + "seqId": 10, + "prevSeqId": -1, + "checksum": 0, + "bids": [["100", "2"]], + "asks": [["101", "3"]], + } + ], + } + ).encode(), + json.dumps( + { + "arg": {"channel": "books", "instId": stream.native_symbol}, + "action": "update", + "data": [ + { + "ts": str(NOW_MS + 1), + "seqId": 11, + "prevSeqId": 10, + "checksum": 0, + "bids": [["100", "2.5"]], + "asks": [], + } + ], + } + ).encode(), + ] + + +def roots(tmp_path: Path): + hot, archive, restore = tmp_path / "hot", tmp_path / "archive", tmp_path / "restore" + hot.mkdir() + archive.mkdir() + restore.mkdir() + return hot, archive, restore + + +def distinct_identity(path: Path) -> VolumeIdentity: + value = path.name + return VolumeIdentity(f"volume-{value}", (f"physical-{value}",)) + + +def storage_guard(hot: Path, archive: Path, *, identity=distinct_identity): + return CaptureStorageGuard( + hot, + archive, + policy=POLICY, + archive_reserve_bytes=1, + volume_identity=identity, + capacity_probe=lambda _path: DiskCapacity(10**9, 9 * 10**8), + hot_size_probe=lambda _path: 0, + ) + + +def config(tmp_path: Path, *, attempts: int = 2): + hot, archive, restore = roots(tmp_path) + streams = default_crypto_l2_streams() + return ( + CaptureConfig( + hot_root=hot, + archive_root=archive, + restore_root=restore, + collector_commit="abc123", + streams=streams, + rotation=SegmentRotation(max_messages=4, max_wire_bytes=100_000, max_age_seconds=60), + retry=RetryPolicy( + max_attempts=attempts, + base_delay_seconds=0.01, + maximum_delay_seconds=0.02, + jitter_fraction=0, + ), + archive_reserve_bytes=1, + ), + streams, + ) + + +def test_full_eight_stream_bounded_probe_archives_and_normalizes(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root) + clock = FakeClock() + connector = FakeConnector(streams) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + clock=clock.now, + ) + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=archive, + http=FakeHttp(), + websockets=connector, + clock=clock, + jitter=lambda: 0.5, + policy=POLICY, + ) + report = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert report.status == "BOUNDED_PROBE_COMPLETE" + assert report.providers == ("binance", "okx") + assert report.capabilities == ( + "btc-spot-l2", + "btc-usdt-perpetual-l2", + "eth-spot-l2", + "eth-usdt-perpetual-l2", + ) + assert report.continuous_days == 0 + assert report.market_data_certified is False + assert report.long_running_capture_started is False + assert len(connector.calls) == len(streams) == 8 + assert all(item.final_state == CaptureState.PAUSED.value for item in report.streams) + assert all(item.websocket_messages == 3 for item in report.streams) + assert all(item.raw_segments == item.archived_segments for item in report.streams) + assert all(item.normalized_epochs == 1 for item in report.streams) + assert all(item.quarantined_rows == 0 and item.accepted_rows >= 2 for item in report.streams) + assert report.report_path and Path(report.report_path).is_file() + assert all(connection.closed for connection in connector.connections) + assert all( + not connection.sent + or json.loads(connection.sent[0]) + == { + "args": [ + { + "channel": "books", + "instId": connection.stream.native_symbol, + } + ], + "op": "subscribe", + } + for connection in connector.connections + ) + + +def test_preflight_same_physical_volume_pauses_without_network(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path) + same = lambda _path: VolumeIdentity("same-volume", ("physical-0",)) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root, identity=same) + connector = FakeConnector(streams) + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ), + http=FakeHttp(), + websockets=connector, + clock=FakeClock(), + policy=POLICY, + ) + report = coordinator.preflight_only() + assert report.status == "PAUSED_PREFLIGHT_FAILED" + assert not connector.calls + assert all(item.websocket_messages == 0 for item in report.streams) + assert all("share physical" in item.errors[0] for item in report.streams) + + +def test_connect_failures_use_bounded_retry_and_end_paused(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path, attempts=2) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root) + clock = FakeClock() + alerts: list[str] = [] + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + clock=clock.now, + ) + archive.preflight() + connector = FailedConnector() + runner = CaptureStreamRunner( + capture_config, + streams[0], + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=FakeHttp(), + websockets=connector, + clock=clock, + jitter=lambda: 0.5, + alert_sink=alerts.append, + policy=POLICY, + ) + report = asyncio.run(runner.run(maximum_websocket_messages=3)) + assert connector.calls == 2 + assert clock.sleeps == [0.01] + assert report.final_state == CaptureState.PAUSED.value + assert len(report.errors) == 2 + assert report.raw_segments == report.archived_segments + assert any("retry_budget_exhausted" in item for item in alerts) + + +def test_archive_failure_pauses_stream_and_is_not_silently_counted(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path, attempts=1) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root) + clock = FakeClock() + + class FailedArchive(LocalArchiveController): + def archive_segment(self, segment): + raise CapturePausedError(f"injected archive failure: {segment.stream_id}") + + archive = FailedArchive( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + clock=clock.now, + ) + archive.preflight() + runner = CaptureStreamRunner( + capture_config, + streams[0], + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=FakeHttp(), + websockets=FakeConnector((streams[0],)), + clock=clock, + jitter=lambda: 0.5, + alert_sink=lambda _message: None, + policy=POLICY, + ) + report = asyncio.run(runner.run(maximum_websocket_messages=3)) + assert report.final_state == CaptureState.PAUSED.value + assert report.raw_segments > report.archived_segments + assert any("archive failure" in item for item in report.errors) + + +def test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight( + tmp_path: Path, + capsys: pytest.CaptureFixture[str], +) -> None: + hot, archive, restore = roots(tmp_path) + path = tmp_path / "capture.json" + payload = { + "hot_root": str(hot), + "archive_root": str(archive), + "restore_root": str(restore), + "collector_commit": "abc", + "archive_reserve_bytes": 1, + } + path.write_text(json.dumps(payload), encoding="utf-8") + loaded = load_capture_config(path) + assert len(loaded.streams) == 8 + assert main_capture([str(path)]) == 2 + output = json.loads(capsys.readouterr().out) + assert output["status"] == "PAUSED_PREFLIGHT_FAILED" + assert output["long_running_capture_started"] is False + + credential = tmp_path / "credential.json" + credential.write_text(json.dumps({**payload, "api_key": "forbidden"}), encoding="utf-8") + with pytest.raises(ValidationError, match="credential"): + load_capture_config(credential) + unknown = tmp_path / "unknown.json" + unknown.write_text(json.dumps({**payload, "other": True}), encoding="utf-8") + with pytest.raises(ValidationError, match="unsupported"): + load_capture_config(unknown) + malformed = tmp_path / "malformed.json" + malformed.write_text("{", encoding="utf-8") + with pytest.raises(ValidationError, match="malformed"): + load_capture_config(malformed) + missing = tmp_path / "missing.json" + missing.write_text(json.dumps({"collector_commit": "x"}), encoding="utf-8") + with pytest.raises(ValidationError, match="missing explicit"): + load_capture_config(missing) + + +def test_cli_run_requires_confirmation_and_probe_bound(tmp_path: Path, capsys) -> None: + hot, archive, restore = roots(tmp_path) + path = tmp_path / "capture.json" + path.write_text( + json.dumps( + { + "hot_root": str(hot), + "archive_root": str(archive), + "restore_root": str(restore), + "collector_commit": "abc", + } + ), + encoding="utf-8", + ) + assert main_capture([str(path), "--mode", "run"]) == 2 + assert "confirm-long-running" in capsys.readouterr().out + assert main_capture([str(path), "--mode", "probe", "--max-messages", "1"]) == 2 + assert "max-messages" in capsys.readouterr().out + + +def test_cli_nested_guards_custom_streams_and_success_modes( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str] +) -> None: + import quant_data_kit.capture_v2.cli as cli_module + + hot, archive, restore = roots(tmp_path) + base = { + "hot_root": str(hot), + "archive_root": str(archive), + "restore_root": str(restore), + "collector_commit": "abc", + "archive_reserve_bytes": 1, + } + + def write(name: str, value: Any) -> Path: + path = tmp_path / name + path.write_text(json.dumps(value), encoding="utf-8") + return path + + with pytest.raises(ValidationError, match="credential"): + load_capture_config(write("nested-credential.json", {**base, "streams": [{"headers": {}}]})) + with pytest.raises(ValidationError, match="JSON object"): + load_capture_config(write("not-object.json", [])) + with pytest.raises(ValidationError, match="rotation and retry"): + load_capture_config(write("bad-rotation-shape.json", {**base, "rotation": []})) + with pytest.raises(ValidationError, match="values are invalid"): + load_capture_config(write("bad-rotation-key.json", {**base, "rotation": {"extra": 1}})) + + with pytest.raises(ValidationError, match="non-empty JSON array"): + cli_module._streams([]) + with pytest.raises(ValidationError, match="must be an object"): + cli_module._streams(["bad"]) + with pytest.raises(ValidationError, match="unsupported fields"): + cli_module._streams([{"other": True}]) + with pytest.raises(ValidationError, match="is invalid"): + cli_module._streams([{"provider": "unknown", "market": "spot"}]) + + configured_streams = [] + for item in default_crypto_l2_streams(): + configured_streams.append( + { + "stream_id": item.stream_id, + "provider": item.provider.value, + "market": item.market.value, + "native_symbol": item.native_symbol, + "instrument_id": item.instrument_id, + "venue": item.venue, + "websocket_url": item.websocket_url, + "channel": item.channel, + "price_scale": item.price_scale, + "quantity_scale": item.quantity_scale, + "rest_snapshot_url": item.rest_snapshot_url, + } + ) + custom_path = write("custom-streams.json", {**base, "streams": configured_streams}) + assert len(load_capture_config(custom_path).streams) == 8 + + @dataclass(frozen=True) + class FakeReport: + status: str + mode: str + + calls: list[int | None | str] = [] + + class FakeCoordinator: + def __init__(self, _config: CaptureConfig) -> None: + pass + + def preflight_only(self) -> FakeReport: + calls.append("preflight") + return FakeReport("PREFLIGHT_PASSED_NETWORK_NOT_STARTED", "preflight") + + async def run(self, *, maximum_websocket_messages: int | None) -> FakeReport: + calls.append(maximum_websocket_messages) + return FakeReport("BOUNDED_PROBE_COMPLETE", "run") + + monkeypatch.setattr(cli_module, "CryptoL2CaptureCoordinator", FakeCoordinator) + assert main_capture([str(custom_path)]) == 0 + assert json.loads(capsys.readouterr().out)["mode"] == "preflight" + assert main_capture([str(custom_path), "--mode", "probe", "--max-messages", "2"]) == 0 + assert json.loads(capsys.readouterr().out)["mode"] == "run" + assert main_capture([str(custom_path), "--mode", "run", "--confirm-long-running"]) == 0 + assert json.loads(capsys.readouterr().out)["mode"] == "run" + assert calls == ["preflight", 2, None] + + +def test_runner_fail_closed_internal_guards_and_raw_metadata(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path, attempts=1) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + clock=FakeClock().now, + ) + archive.preflight() + alerts: list[str] = [] + runner = CaptureStreamRunner( + capture_config, + streams[0], + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=FakeHttp(), + websockets=FailedConnector(), + clock=FakeClock(), + jitter=lambda: 0.5, + alert_sink=alerts.append, + policy=POLICY, + ) + with pytest.raises(ValidationError, match="journal was not initialized"): + runner._apply_outcome(NormalizationOutcome()) + runner._new_epoch() + with pytest.raises(ValidationError, match="previous Normalized epoch"): + runner._new_epoch() + runner._finalize_epoch(abort_reason="injected empty epoch") + runner._finalize_epoch() + runner._alert("AUDIT_PERSISTENCE_FAILED:injected") + assert runner._audit_failures == 1 + runner._pause("operator_pause", OSError("injected")) + audit_count = len(runner.state.events) + runner._pause("duplicate_pause") + assert len(runner.state.events) == audit_count + + with pytest.raises(ResyncRequired, match="JSON object"): + _frame_metadata(Provider.BINANCE, b"[]") + event_time, sequences = _frame_metadata( + Provider.BINANCE, + json.dumps({"data": {"E": NOW_MS, "U": 1, "u": 2}}).encode(), + ) + assert event_time == NOW and sequences == {"U": 1, "u": 2} + + +def test_unverified_archive_receipt_pauses_before_lineage(tmp_path: Path) -> None: + capture_config, streams = config(tmp_path, attempts=1) + guard = storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + runner = CaptureStreamRunner( + capture_config, + streams[0], + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=FakeHttp(), + websockets=FailedConnector(), + clock=FakeClock(), + jitter=lambda: 0.5, + alert_sink=lambda _message: None, + policy=POLICY, + ) + + @dataclass(frozen=True) + class UnverifiedReceipt: + archive_restore_verified: bool = False + eligible_for_cleanup: bool = False + + class UnverifiedArchive: + def archive_segment(self, _segment) -> UnverifiedReceipt: + return UnverifiedReceipt() + + runner.segment_writer.flush() + runner.archive = UnverifiedArchive() # type: ignore[assignment] + with pytest.raises(CapturePausedError, match="not restore-verified"): + runner._drain_segments() + + +def test_urllib_http_client_preserves_bytes_tls_and_errors(monkeypatch: pytest.MonkeyPatch) -> None: + client = UrllibHttpClient() + with pytest.raises(ValidationError, match="https"): + asyncio.run(client.get("http://example.invalid", timeout_seconds=1)) + + class Response: + status = 200 + + def __enter__(self): + return self + + def __exit__(self, *_args): + return None + + def read(self): + return b"exact" + + def geturl(self): + return "https://example.test/final" + + monkeypatch.setattr("urllib.request.urlopen", lambda *_args, **_kwargs: Response()) + response = asyncio.run(client.get("https://example.test", timeout_seconds=1)) + assert response.body == b"exact" and response.status == 200 + + def failed(*_args, **_kwargs): + raise urllib.error.URLError("offline") + + monkeypatch.setattr("urllib.request.urlopen", failed) + with pytest.raises(ProviderError, match="snapshot failed"): + asyncio.run(client.get("https://example.test", timeout_seconds=1)) + + class BadResponse(Response): + status = 503 + + monkeypatch.setattr("urllib.request.urlopen", lambda *_args, **_kwargs: BadResponse()) + with pytest.raises(ProviderError, match="status=503"): + asyncio.run(client.get("https://example.test", timeout_seconds=1)) + + class DowngradedResponse(Response): + def geturl(self): + return "http://example.test/downgraded" + + monkeypatch.setattr("urllib.request.urlopen", lambda *_args, **_kwargs: DowngradedResponse()) + with pytest.raises(ProviderError, match="non-TLS"): + asyncio.run(client.get("https://example.test", timeout_seconds=1)) + + +def test_websocket_transport_wrapper_bytes_text_timeout_and_tls( + monkeypatch: pytest.MonkeyPatch, +) -> None: + class Underlying: + def __init__(self, values: list[Any]) -> None: + self.values = values + self.sent: list[bytes] = [] + self.closed = False + + async def send(self, payload: bytes) -> None: + self.sent.append(payload) + + async def recv(self): + value = self.values.pop(0) + if isinstance(value, Exception): + raise value + if value == "sleep": + await asyncio.sleep(0.02) + return "late" + return value + + async def close(self): + self.closed = True + + underlying = Underlying(["text", b"bytes", 123, "sleep"]) + wrapped = _WebsocketsConnection(underlying) + assert asyncio.run(wrapped.receive(timeout_seconds=1)) == b"text" + assert asyncio.run(wrapped.receive(timeout_seconds=1)) == b"bytes" + with pytest.raises(ProviderError, match="unsupported"): + asyncio.run(wrapped.receive(timeout_seconds=1)) + with pytest.raises(ProviderError, match="timed out"): + asyncio.run(wrapped.receive(timeout_seconds=0.001)) + asyncio.run(wrapped.send(b"subscribe")) + asyncio.run(wrapped.close()) + assert underlying.sent == [b"subscribe"] and underlying.closed + + connector = WebsocketsConnector() + with pytest.raises(ValidationError, match="wss"): + asyncio.run(connector.connect("ws://plain", timeout_seconds=1)) + + async def connected(*_args, **_kwargs): + return Underlying([]) + + monkeypatch.setattr("websockets.asyncio.client.connect", connected) + assert asyncio.run(connector.connect("wss://example.test", timeout_seconds=1)) + + async def connection_failure(*_args, **_kwargs): + raise OSError("TLS unavailable") + + monkeypatch.setattr("websockets.asyncio.client.connect", connection_failure) + with pytest.raises(ProviderError, match="connection failed"): + asyncio.run(connector.connect("wss://example.test", timeout_seconds=1)) diff --git a/tests/test_capture_v2_models_storage.py b/tests/test_capture_v2_models_storage.py new file mode 100644 index 0000000..223110c --- /dev/null +++ b/tests/test_capture_v2_models_storage.py @@ -0,0 +1,678 @@ +from __future__ import annotations + +import json +from dataclasses import replace +from datetime import datetime, timedelta, timezone +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from quant_data_kit.capture_v2.models import ( + M7_CAPABILITIES, + M7_PROVIDERS, + AuditEvent, + CaptureConfig, + CaptureState, + CaptureStateMachine, + MonotonicReceivedClock, + Provider, + RawFrame, + RetryPolicy, + SegmentRotation, + StreamConfig, + SymbolMappingResolver, + assert_m7_scope, + default_crypto_l2_streams, + default_symbol_mappings, +) +from quant_data_kit.capture_v2.storage import ( + CapturePausedError, + CaptureStorageGuard, + DiskCapacity, + LocalArchiveController, + RawSegmentWriter, + VolumeIdentity, + iter_segment_frames, +) +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.domain_v2 import SymbolMapping +from quant_data_kit.exceptions import ValidationError + +UTC = timezone.utc +NOW = datetime(2026, 8, 29, 0, 0, tzinfo=UTC) +TEST_POLICY = StoragePolicy( + hot_quota_bytes=1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, +) +AMPLE = DiskCapacity(total_bytes=10 * 1024**3, free_bytes=9 * 1024**3) + + +class FakeClock: + def __init__(self, current: datetime = NOW) -> None: + self.current = current + self.sleeps: list[float] = [] + + def now(self) -> datetime: + value = self.current + self.current += timedelta(milliseconds=1) + return value + + async def sleep(self, seconds: float) -> None: + self.sleeps.append(seconds) + self.current += timedelta(seconds=seconds) + + +def identities(path: Path) -> VolumeIdentity: + name = "archive-disk" if "archive" in path.name else "hot-disk" + return VolumeIdentity(identity=f"volume-{name}", physical_devices=(name,)) + + +def guard(hot: Path, archive: Path, **kwargs: object) -> CaptureStorageGuard: + return CaptureStorageGuard( + hot, + archive, + policy=TEST_POLICY, + archive_reserve_bytes=1024, + volume_identity=kwargs.get("volume_identity", identities), # type: ignore[arg-type] + capacity_probe=kwargs.get("capacity_probe", lambda _path: AMPLE), # type: ignore[arg-type] + hot_size_probe=kwargs.get("hot_size_probe", lambda _path: 0), # type: ignore[arg-type] + ) + + +def raw_frame( + stream: StreamConfig, + index: int, + *, + received_at: datetime | None = None, + payload: bytes | None = None, +) -> RawFrame: + received = received_at or NOW + timedelta(seconds=index) + return RawFrame( + frame_kind="market_data", + provider=stream.provider.value, + stream_id=stream.stream_id, + connection_id="connection-1", + subscription=stream.channel, + transport="wss", + tls_url=stream.websocket_url, + received_at=received, + observed_at=received, + event_time=received, + payload=payload or json.dumps({"index": index}).encode(), + native_sequence={"u": index}, + collector_commit="deadbeef", + ) + + +def storage_roots(tmp_path: Path) -> tuple[Path, Path, Path]: + hot = tmp_path / "hot" + archive = tmp_path / "archive" + restore = hot / "restore" + hot.mkdir() + archive.mkdir() + restore.mkdir() + return hot, archive, restore + + +def test_default_scope_is_exact_sorted_and_credential_free(tmp_path: Path) -> None: + streams = default_crypto_l2_streams() + assert len(streams) == 8 + assert tuple(item.stream_id for item in streams) == tuple( + sorted(item.stream_id for item in streams) + ) + assert {item.provider.value for item in streams} == set(M7_PROVIDERS) + assert tuple(sorted({item.capability for item in streams})) == M7_CAPABILITIES + assert all(item.websocket_url.startswith("wss://") for item in streams) + assert all( + item.rest_snapshot_url is None or item.rest_snapshot_url.startswith("https://") + for item in streams + ) + assert_m7_scope(streams) + config = CaptureConfig( + hot_root=(tmp_path / "hot").absolute(), + archive_root=(tmp_path / "archive").absolute(), + restore_root=(tmp_path / "restore").absolute(), + collector_commit="abc123", + streams=streams, + ) + assert config.providers == M7_PROVIDERS + assert config.capabilities == M7_CAPABILITIES + + +def test_scope_config_stream_and_retry_guards(tmp_path: Path) -> None: + streams = default_crypto_l2_streams() + with pytest.raises(ValidationError, match="exactly 8"): + assert_m7_scope(streams[:-1]) + with pytest.raises(ValidationError, match="providers"): + assert_m7_scope( + tuple(replace(item, provider=Provider.OKX, rest_snapshot_url=None) for item in streams) + ) + wrong = tuple(replace(item, native_symbol="SOL-USDT") for item in streams) + with pytest.raises(ValidationError, match="capabilities"): + assert_m7_scope(wrong) + + sample = streams[0] + with pytest.raises(ValidationError, match="TLS"): + replace(sample, websocket_url="ws://invalid") + with pytest.raises(ValidationError, match="HTTPS"): + replace(sample, rest_snapshot_url=None) + okx = next(item for item in streams if item.provider is Provider.OKX) + with pytest.raises(ValidationError, match="OKX"): + replace(okx, rest_snapshot_url="https://example.invalid") + with pytest.raises(ValidationError, match="fixed-point"): + replace(sample, price_scale=-1) + + for kwargs in ( + {"max_attempts": 0}, + {"base_delay_seconds": 0}, + {"maximum_delay_seconds": 0.1}, + {"jitter_fraction": 2}, + ): + with pytest.raises(ValidationError): + RetryPolicy(**kwargs) + retry = RetryPolicy(max_attempts=3, base_delay_seconds=2, maximum_delay_seconds=3) + assert retry.delay(1, lambda: 0.5) == 2 + assert retry.delay(2, lambda: 0.5) == 3 + for attempt, jitter in ((0, lambda: 0.5), (3, lambda: 0.5), (1, lambda: 2.0)): + with pytest.raises(ValidationError): + retry.delay(attempt, jitter) + + with pytest.raises(ValidationError, match="at least two"): + SegmentRotation(max_messages=1) + with pytest.raises(ValidationError, match="positive"): + SegmentRotation(max_age_seconds=0) + with pytest.raises(ValidationError, match="absolute"): + CaptureConfig(Path("hot"), tmp_path, tmp_path, "x", streams) + with pytest.raises(ValidationError, match="explicit"): + CaptureConfig(tmp_path, tmp_path, tmp_path, "", streams) + with pytest.raises(ValidationError, match="include streams"): + CaptureConfig(tmp_path, tmp_path, tmp_path, "x") + with pytest.raises(ValidationError, match="unique"): + CaptureConfig(tmp_path, tmp_path, tmp_path, "x", (sample, sample)) + with pytest.raises(ValidationError, match="archive_reserve"): + CaptureConfig(tmp_path, tmp_path, tmp_path, "x", streams, archive_reserve_bytes=0) + + +def test_symbol_mapping_resolution_is_effective_and_point_in_time() -> None: + streams = default_crypto_l2_streams() + sample = streams[0] + resolver = SymbolMappingResolver(default_symbol_mappings(streams)) + assert ( + resolver.resolve( + sample.mapping_source, + sample.native_symbol, + event_time=NOW, + known_at=NOW, + ) + == sample.instrument_id + ) + with pytest.raises(ValidationError, match="exactly one"): + resolver.resolve("binance", "MISSING", event_time=NOW, known_at=NOW) + future_mapping = SymbolMapping( + source="binance", + provider_symbol="BTCUSDT", + instrument_id="future", + effective_from=NOW, + available_at=NOW + timedelta(days=1), + ) + with pytest.raises(ValidationError, match="exactly one"): + SymbolMappingResolver((future_mapping,)).resolve( + "binance", "BTCUSDT", event_time=NOW, known_at=NOW + ) + duplicate = replace(future_mapping, instrument_id="duplicate", available_at=NOW) + with pytest.raises(ValidationError, match="matches=2"): + SymbolMappingResolver((replace(future_mapping, available_at=NOW), duplicate)).resolve( + "binance", "BTCUSDT", event_time=NOW, known_at=NOW + ) + + +def test_raw_frame_round_trip_and_monotonic_clock() -> None: + stream = default_crypto_l2_streams()[0] + frame = raw_frame(stream, 1, payload=b"\x00exact-wire\xff") + record = frame.record() + assert RawFrame.from_record(record) == frame + changed = dict(record) + changed["raw_sha256"] = "0" * 64 + with pytest.raises(ValidationError, match="integrity"): + RawFrame.from_record(changed) + with pytest.raises(ValidationError, match="schema"): + RawFrame.from_record({**record, "schema_version": "wrong"}) + with pytest.raises(ValidationError, match="malformed"): + RawFrame.from_record({**record, "payload_base64": "%%%"}) + with pytest.raises(ValidationError, match="transport"): + replace(frame, transport="plain") + with pytest.raises(ValidationError, match="URL"): + replace(frame, tls_url="ws://plain") + with pytest.raises(ValidationError, match="bytes"): + replace(frame, payload="not-bytes") # type: ignore[arg-type] + with pytest.raises(ValidationError, match="collector_commit"): + replace(frame, collector_commit="") + + clock = FakeClock() + monotonic = MonotonicReceivedClock(clock) + observed_one, received_one = monotonic.now() + clock.current = observed_one + observed_two, received_two = monotonic.now() + assert observed_two == observed_one + assert received_two > received_one + + +def test_state_machine_audits_legal_illegal_and_sink_failure() -> None: + stream = default_crypto_l2_streams()[0] + clock = FakeClock() + frames: list[RawFrame] = [] + alerts: list[str] = [] + machine = CaptureStateMachine( + stream, + connection_id="one", + collector_commit="abc", + clock=clock, + audit_sink=frames.append, + alert_sink=alerts.append, + ) + machine.transition(CaptureState.BUFFERING, "connected") + machine.transition(CaptureState.SNAPSHOT_SYNC, "snapshot") + machine.audit("heartbeat", "no-change", {"seq": 1}) + machine.transition(CaptureState.LIVE, "live") + machine.transition(CaptureState.RESYNC, "gap") + machine.transition(CaptureState.CONNECTING, "retry") + machine.transition(CaptureState.PAUSED, "operator") + assert len(frames) == len(machine.events) == 8 + assert isinstance(machine.events[0], AuditEvent) + assert RawFrame.from_record(frames[0].record()).payload == frames[0].payload + with pytest.raises(ValidationError, match="illegal"): + machine.transition(CaptureState.LIVE, "invalid") + assert alerts[-1].startswith("ILLEGAL_CAPTURE_TRANSITION") + + def failed_sink(_frame: RawFrame) -> None: + raise OSError("disk full") + + failed = CaptureStateMachine( + stream, + connection_id="two", + collector_commit="abc", + clock=clock, + audit_sink=failed_sink, + alert_sink=alerts.append, + ) + assert failed.events + assert any(item.startswith("AUDIT_PERSISTENCE_FAILED") for item in alerts) + + +def test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths( + tmp_path: Path, +) -> None: + hot, archive, _ = storage_roots(tmp_path) + accepted = guard(hot, archive).require_preflight(projected_hot_bytes=10) + assert accepted.allowed + assert accepted.hot_identity != accepted.archive_identity + + shared = guard( + hot, + archive, + volume_identity=lambda _path: VolumeIdentity("same", ("physical-0",)), + ).preflight() + assert not shared.allowed and "share physical" in (shared.alert or "") + + missing = guard(hot, tmp_path / "missing").preflight() + assert not missing.allowed and "missing" in (missing.alert or "") + + def low_archive(path: Path) -> DiskCapacity: + return DiskCapacity(10_000, 1) if path == archive else AMPLE + + low = guard(hot, archive, capacity_probe=low_archive).preflight() + assert not low.allowed and "archive capacity" in (low.alert or "") + + def failed_identity(_path: Path) -> VolumeIdentity: + raise OSError("identity unavailable") + + identity_failure = guard(hot, archive, volume_identity=failed_identity).preflight() + assert not identity_failure.allowed and "identity unavailable" in (identity_failure.alert or "") + + def failed_capacity(_path: Path) -> DiskCapacity: + raise OSError("probe unavailable") + + capacity_failure = guard(hot, archive, capacity_probe=failed_capacity).preflight() + assert not capacity_failure.allowed and "capacity probe failed" in ( + capacity_failure.alert or "" + ) + with pytest.raises(CapturePausedError, match="CAPTURE_PAUSED"): + guard(hot, archive, capacity_probe=low_archive).require_preflight() + + +def test_archive_preflight_segment_rotation_restore_and_no_cleanup(tmp_path: Path) -> None: + hot, archive, restore = storage_roots(tmp_path) + storage_guard = guard(hot, archive) + clock = FakeClock() + controller = LocalArchiveController( + hot, + archive, + restore, + storage_guard=storage_guard, + clock=clock.now, + ) + preflight = controller.preflight() + assert preflight.probe_sha256 == preflight.restored_sha256 + assert Path(preflight.receipt_path).is_file() + + stream = default_crypto_l2_streams()[0] + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="deadbeef", + rotation=SegmentRotation(max_messages=3, max_wire_bytes=10_000, max_age_seconds=30), + storage_guard=storage_guard, + policy=TEST_POLICY, + ) + writer.append(raw_frame(stream, 1, payload=b"first")) + writer.append(raw_frame(stream, 2, payload=b"second")) + assert writer.pending_messages == 2 and writer.drain_completed() == () + writer.append(raw_frame(stream, 3, payload=b"third")) + segments = writer.drain_completed() + assert len(segments) == 1 and segments[0].message_count == 3 + assert segments[0].wire_byte_count == len(b"firstsecondthird") + decoded = tuple(iter_segment_frames(hot, segments[0])) + assert [item.payload for item in decoded] == [b"first", b"second", b"third"] + receipt = controller.archive_segment(segments[0]) + assert receipt.archive_restore_verified is True + assert receipt.eligible_for_cleanup is True + assert receipt.cleanup_performed is False + assert Path(receipt.archive_directory, "payload.bin").is_file() + assert next(hot.rglob(f"object={segments[0].raw_manifest.object_id}/payload.bin")).is_file() + assert writer.segment_count == 1 + + +def test_segment_time_rotation_identity_order_and_capacity_fail_closed(tmp_path: Path) -> None: + hot, archive, _ = storage_roots(tmp_path) + stream = default_crypto_l2_streams()[0] + storage_guard = guard(hot, archive) + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=10, max_wire_bytes=10_000, max_age_seconds=1), + storage_guard=storage_guard, + policy=TEST_POLICY, + ) + writer.append(raw_frame(stream, 1, received_at=NOW)) + writer.append(raw_frame(stream, 2, received_at=NOW + timedelta(seconds=2))) + assert len(writer.drain_completed()) == 1 + with pytest.raises(ValidationError, match="identity"): + writer.append(replace(raw_frame(stream, 3), stream_id="other")) + with pytest.raises(ValidationError, match="regressed"): + writer.append(raw_frame(stream, 4, received_at=NOW)) + + low_guard = guard( + hot, + archive, + capacity_probe=lambda _path: DiskCapacity(10_000, 0), + ) + stopped = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc", + rotation=SegmentRotation(), + storage_guard=low_guard, + policy=TEST_POLICY, + ) + with pytest.raises(CapturePausedError, match="COLLECTION_STOPPED"): + stopped.append(raw_frame(stream, 5)) + + +def test_archive_missing_restore_and_hash_failure_pause( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, archive, restore = storage_roots(tmp_path) + storage_guard = guard(hot, archive) + missing_restore = LocalArchiveController( + hot, + archive, + tmp_path / "missing-restore", + storage_guard=storage_guard, + ) + with pytest.raises(CapturePausedError, match="restore_root"): + missing_restore.preflight() + + controller = LocalArchiveController(hot, archive, restore, storage_guard=storage_guard) + stream = default_crypto_l2_streams()[0] + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=storage_guard, + policy=TEST_POLICY, + ) + writer.append(raw_frame(stream, 1)) + writer.append(raw_frame(stream, 2)) + segment = writer.drain_completed()[0] + + import quant_data_kit.capture_v2.storage as storage_module + + real_hash = storage_module._sha256_file + + def wrong_restore_hash(path: Path) -> str: + if "qdk-segment-restore" in str(path): + return "0" * 64 + return real_hash(path) + + monkeypatch.setattr(storage_module, "_sha256_file", wrong_restore_hash) + with pytest.raises(CapturePausedError, match="hash validation"): + controller.archive_segment(segment) + + +def test_storage_negative_capacity_rotation_and_immutable_paths( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + import quant_data_kit.capture_v2.storage as storage_module + + with pytest.raises(ValidationError, match="physical devices"): + VolumeIdentity("invalid", ()) + + relative = CaptureStorageGuard( + Path("relative-hot"), + Path("relative-archive"), + policy=TEST_POLICY, + archive_reserve_bytes=1, + volume_identity=identities, + capacity_probe=lambda _path: AMPLE, + hot_size_probe=lambda _path: 0, + ).preflight() + assert not relative.allowed + assert sum("absolute path" in reason for reason in relative.reasons) == 2 + + hot, archive, _ = storage_roots(tmp_path) + low_guard = guard( + hot, + archive, + capacity_probe=lambda _path: DiskCapacity(total_bytes=10_000, free_bytes=0), + ) + with pytest.raises(CapturePausedError, match="archive free-space floor"): + low_guard.require_archive_capacity(projected_write_bytes=1) + + stream = default_crypto_l2_streams()[0] + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=10, max_wire_bytes=2, max_age_seconds=60), + storage_guard=guard(hot, archive), + policy=TEST_POLICY, + ) + assert writer.flush() is None + writer.append( + replace(raw_frame(stream, 1, payload=b"abc"), event_time=None, native_sequence={}) + ) + segment = writer.drain_completed()[0] + assert segment.first_event_time is None and segment.last_event_time is None + assert dict(segment.native_sequence_range) == {} + + immutable = tmp_path / "immutable" / "value.bin" + storage_module._atomic_immutable_write(immutable, b"same") + storage_module._atomic_immutable_write(immutable, b"same") + with pytest.raises(ValidationError, match="different bytes"): + storage_module._atomic_immutable_write(immutable, b"different") + + failed_target = tmp_path / "immutable" / "replace-failure.bin" + + def replace_failed(_source: Path, _target: Path) -> None: + raise OSError("injected atomic replace failure") + + monkeypatch.setattr(storage_module.os, "replace", replace_failed) + with pytest.raises(OSError, match="atomic replace"): + storage_module._atomic_immutable_write(failed_target, b"temporary") + assert not tuple(failed_target.parent.glob(".replace-failure.bin.*.tmp")) + + +def test_archive_preflight_mismatch_and_raw_segment_line_fail_closed( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + import quant_data_kit.capture_v2.storage as storage_module + + hot, archive, restore = storage_roots(tmp_path) + storage_guard = guard(hot, archive) + controller = LocalArchiveController(hot, archive, restore, storage_guard=storage_guard) + real_hash = storage_module._sha256_file + + def wrong_preflight_hash(path: Path) -> str: + if "qdk-archive-preflight" in str(path): + return "0" * 64 + return real_hash(path) + + monkeypatch.setattr(storage_module, "_sha256_file", wrong_preflight_hash) + with pytest.raises(CapturePausedError, match="preflight restore hash mismatch"): + controller.preflight() + + monkeypatch.setattr(storage_module, "_sha256_file", real_hash) + stream = default_crypto_l2_streams()[0] + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=storage_guard, + policy=TEST_POLICY, + ) + first, second = raw_frame(stream, 1), raw_frame(stream, 2) + writer.append(first) + writer.append(second) + segment = writer.drain_completed()[0] + original_loader = storage_module.load_raw_object + raw, _payload = original_loader(hot, segment.raw_manifest.reference()) + body = b"\n" + json.dumps(first.record()).encode("utf-8") + b"\n" + monkeypatch.setattr(storage_module, "load_raw_object", lambda *_args: (raw, body)) + assert tuple(iter_segment_frames(hot, segment)) == (first,) + monkeypatch.setattr(storage_module, "load_raw_object", lambda *_args: (raw, b"{\n")) + with pytest.raises(ValidationError, match="line 1 is malformed"): + tuple(iter_segment_frames(hot, segment)) + + +def test_physical_volume_probe_failures_and_symlink_are_fail_closed( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + import ctypes + from ctypes import wintypes + + import quant_data_kit.capture_v2.storage as storage_module + + class FakePath: + anchor = "C:\\" + + def __init__(self, _value: object) -> None: + pass + + def resolve(self, *, strict: bool) -> FakePath: + assert strict is True + return self + + monkeypatch.setattr(storage_module, "Path", FakePath) + FakePath.anchor = "unsupported-anchor" + with pytest.raises(CapturePausedError, match="cannot resolve Windows volume anchor"): + storage_module._windows_volume_identity(tmp_path) + FakePath.anchor = "C:\\" + + class CallableStub: + def __init__(self, implementation) -> None: + self.implementation = implementation + + def __call__(self, *args): + return self.implementation(*args) + + def kernel(create_result: int, device_control) -> SimpleNamespace: + return SimpleNamespace( + CreateFileW=CallableStub(lambda *_args: create_result), + DeviceIoControl=CallableStub(device_control), + CloseHandle=CallableStub(lambda *_args: None), + ) + + invalid_handle = wintypes.HANDLE(-1).value + monkeypatch.setattr( + storage_module.ctypes, + "windll", + SimpleNamespace(kernel32=kernel(invalid_handle, lambda *_args: 0)), + raising=False, + ) + with pytest.raises(CapturePausedError, match="cannot open volume"): + storage_module._windows_volume_identity(tmp_path) + + monkeypatch.setattr( + storage_module.ctypes, + "windll", + SimpleNamespace(kernel32=kernel(1, lambda *_args: 0)), + raising=False, + ) + with pytest.raises(CapturePausedError, match="extents unavailable"): + storage_module._windows_volume_identity(tmp_path) + + def device_response(count: int, returned_bytes: int): + def respond( + _handle, + _control_code, + _input, + _input_length, + output, + _output_length, + returned, + _overlapped, + ) -> int: + ctypes.memmove(output, count.to_bytes(4, "little"), 4) + returned._obj.value = returned_bytes + return 1 + + return respond + + monkeypatch.setattr( + storage_module.ctypes, + "windll", + SimpleNamespace(kernel32=kernel(1, device_response(0, 16))), + raising=False, + ) + with pytest.raises(CapturePausedError, match="no physical disk extents"): + storage_module._windows_volume_identity(tmp_path) + + monkeypatch.setattr( + storage_module.ctypes, + "windll", + SimpleNamespace(kernel32=kernel(1, device_response(2, 16))), + raising=False, + ) + with pytest.raises(CapturePausedError, match="truncated physical disk extents"): + storage_module._windows_volume_identity(tmp_path) + + monkeypatch.undo() + symlink_case = tmp_path / "symlink-case" + symlink_case.mkdir() + hot, archive, _ = storage_roots(symlink_case) + real_is_symlink = Path.is_symlink + monkeypatch.setattr(Path, "is_symlink", lambda self: self == hot or real_is_symlink(self)) + decision = guard(hot, archive).preflight() + assert not decision.allowed + assert "symbolic link" in (decision.alert or "") diff --git a/tests/test_capture_v2_synchronizers_epoch.py b/tests/test_capture_v2_synchronizers_epoch.py new file mode 100644 index 0000000..e3de14b --- /dev/null +++ b/tests/test_capture_v2_synchronizers_epoch.py @@ -0,0 +1,553 @@ +from __future__ import annotations + +import json +from dataclasses import replace +from datetime import datetime, timedelta, timezone +from pathlib import Path + +import pytest + +from quant_data_kit.adapters_v2.base import BookSequenceNormalizer +from quant_data_kit.capture_v2.epoch import NormalizedEpochJournal +from quant_data_kit.capture_v2.models import ( + MarketKind, + Provider, + RawFrame, + SegmentRotation, + SymbolMappingResolver, + default_crypto_l2_streams, + default_symbol_mappings, +) +from quant_data_kit.capture_v2.storage import ( + CaptureStorageGuard, + DiskCapacity, + RawSegmentWriter, + VolumeIdentity, +) +from quant_data_kit.capture_v2.synchronizers import ( + BinanceBookSynchronizer, + OKXBookSynchronizer, + ResyncRequired, +) +from quant_data_kit.data_lake import StoragePolicy, load_normalized_snapshot +from quant_data_kit.exceptions import ValidationError + +UTC = timezone.utc +NOW = datetime(2026, 8, 29, 1, 0, tzinfo=UTC) +NOW_MS = int(NOW.timestamp() * 1000) +POLICY = StoragePolicy( + hot_quota_bytes=1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, +) + + +def stream(provider: Provider, market: MarketKind, asset: str = "BTC"): + return next( + item + for item in default_crypto_l2_streams() + if item.provider is provider and item.market is market and asset in item.native_symbol + ) + + +def resolver(): + values = default_crypto_l2_streams() + return SymbolMappingResolver(default_symbol_mappings(values)) + + +def frame(config, payload: dict, index: int = 0, *, transport: str = "wss") -> RawFrame: + received = NOW + timedelta(milliseconds=10 + index) + url = config.websocket_url if transport == "wss" else config.rest_snapshot_url + return RawFrame( + frame_kind="market_data" if transport == "wss" else "rest_snapshot", + provider=config.provider.value, + stream_id=config.stream_id, + connection_id="conn", + subscription=config.channel, + transport=transport, + tls_url=str(url), + received_at=received, + observed_at=received, + event_time=NOW, + payload=json.dumps(payload, separators=(",", ":")).encode(), + native_sequence={}, + collector_commit="abc", + ) + + +def binance_snapshot(config, last_id: int = 100) -> RawFrame: + return frame( + config, + {"lastUpdateId": last_id, "bids": [["100", "2"]], "asks": [["101", "3"]]}, + transport="https", + ) + + +def binance_update(config, first: int, final: int, *, previous: int | None = None, **changes): + payload = { + "e": "depthUpdate", + "E": NOW_MS, + "T": NOW_MS, + "s": config.native_symbol, + "U": first, + "u": final, + "b": changes.get("bids", [["100", "2.5"]]), + "a": changes.get("asks", []), + } + if previous is not None: + payload["pu"] = previous + return frame(config, payload, final) + + +def okx_message(config, action: str, seq: int, prev: int, *, bids=None, asks=None, checksum=0): + return frame( + config, + { + "arg": {"channel": "books", "instId": config.native_symbol}, + "action": action, + "data": [ + { + "ts": str(NOW_MS), + "seqId": seq, + "prevSeqId": prev, + "checksum": checksum, + "bids": bids if bids is not None else [], + "asks": asks if asks is not None else [], + } + ], + }, + seq, + ) + + +def storage(tmp_path: Path): + hot, archive = tmp_path / "hot", tmp_path / "archive" + hot.mkdir() + archive.mkdir() + + def identity(path: Path) -> VolumeIdentity: + value = "archive" if path == archive else "hot" + return VolumeIdentity(value, (value,)) + + guard = CaptureStorageGuard( + hot, + archive, + policy=POLICY, + archive_reserve_bytes=1, + volume_identity=identity, + capacity_probe=lambda _path: DiskCapacity(10**9, 9 * 10**8), + hot_size_probe=lambda _path: 0, + ) + return hot, archive, guard + + +def test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit() -> None: + config = stream(Provider.BINANCE, MarketKind.USDT_PERPETUAL) + sync = BinanceBookSynchronizer(config, resolver()) + snapshot = sync.admit_snapshot(binance_snapshot(config)) + assert snapshot.snapshot_admitted and snapshot.records[0]["event_type"] == "book_snapshot" + + stale = sync.admit_update(binance_update(config, 90, 100, previous=90)) + assert not stale.records and stale.observations[0].event == "stale_buffered_update" + bridged = sync.admit_update( + binance_update( + config, + 99, + 101, + previous=99, + bids=[["99", "0"], ["100", "2.5"]], + ) + ) + assert sync.live + assert len(bridged.records) == 1 + assert bridged.records[0]["action"] == "upsert" + assert bridged.observations[0].event == "absent_level_delete" + + no_change = sync.admit_update( + binance_update(config, 102, 102, previous=101, bids=[["98", "0"]]) + ) + assert not no_change.records and no_change.observations[0].event == "absent_level_delete" + accepted = sync.admit_update(binance_update(config, 103, 103, previous=102)) + assert accepted.records + duplicate = sync.admit_update(binance_update(config, 103, 103, previous=102)) + assert duplicate.observations[0].event == "duplicate_or_old_update" + + +def test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed() -> None: + spot = stream(Provider.BINANCE, MarketKind.SPOT) + spot_sync = BinanceBookSynchronizer(spot, resolver()) + spot_sync.admit_snapshot(binance_snapshot(spot)) + spot_sync.admit_update(binance_update(spot, 100, 101)) + assert spot_sync.admit_update(binance_update(spot, 101, 102)).records + with pytest.raises(ResyncRequired, match="discontinuous"): + spot_sync.admit_update(binance_update(spot, 104, 104)) + + stale_snapshot = BinanceBookSynchronizer(spot, resolver()) + stale_snapshot.admit_snapshot(binance_snapshot(spot)) + with pytest.raises(ResyncRequired, match="did not bridge"): + stale_snapshot.admit_update(binance_update(spot, 101, 102)) + + future = stream(Provider.BINANCE, MarketKind.USDT_PERPETUAL) + future_sync = BinanceBookSynchronizer(future, resolver()) + future_sync.admit_snapshot(binance_snapshot(future)) + future_sync.admit_update(binance_update(future, 100, 101, previous=100)) + with pytest.raises(ResyncRequired, match="pu chain"): + future_sync.admit_update(binance_update(future, 102, 102, previous=99)) + missing_pu = binance_update(future, 102, 102) + with pytest.raises(ResyncRequired, match="missing pu"): + future_sync.admit_update(missing_pu) + + +@pytest.mark.parametrize( + "payload,message", + [ + ({"lastUpdateId": "bad", "bids": [], "asks": []}, "snapshot is malformed"), + ({"lastUpdateId": 1, "bids": [["101", "1"]], "asks": [["100", "1"]]}, "crossed"), + ], +) +def test_binance_snapshot_malformed_and_crossed(payload: dict, message: str) -> None: + config = stream(Provider.BINANCE, MarketKind.SPOT) + with pytest.raises(ResyncRequired, match=message): + BinanceBookSynchronizer(config, resolver()).admit_snapshot( + frame(config, payload, transport="https") + ) + + +def test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot() -> None: + config = stream(Provider.BINANCE, MarketKind.SPOT) + sync = BinanceBookSynchronizer(config, resolver()) + with pytest.raises(ResyncRequired, match="before REST"): + sync.admit_update(binance_update(config, 1, 2)) + sync.admit_snapshot(binance_snapshot(config)) + wrong_event = binance_update(config, 100, 101) + wrong_payload = json.loads(wrong_event.payload) + wrong_payload["e"] = "trade" + with pytest.raises(ResyncRequired, match="unexpected"): + sync.admit_update(frame(config, wrong_payload)) + with pytest.raises(ResyncRequired, match="reversed"): + sync.admit_update(binance_update(config, 102, 101)) + + bad_mapping = SymbolMappingResolver(()) + mapped = BinanceBookSynchronizer(config, bad_mapping) + with pytest.raises(ResyncRequired, match="exactly one"): + mapped.admit_snapshot(binance_snapshot(config)) + + +def test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset() -> None: + config = stream(Provider.OKX, MarketKind.SPOT) + sync = OKXBookSynchronizer(config, resolver()) + control = sync.admit_message( + frame( + config, + {"event": "subscribe", "arg": {"channel": "books"}, "code": "0", "msg": ""}, + ) + ) + assert control.observations[0].event == "subscription_control" + snapshot = sync.admit_message( + okx_message( + config, + "snapshot", + 10, + -1, + bids=[["100", "2"]], + asks=[["101", "3"]], + checksum=123, + ) + ) + assert snapshot.snapshot_admitted and snapshot.records + assert snapshot.observations[0].event == "deprecated_checksum_ignored" + heartbeat = sync.admit_message(okx_message(config, "update", 10, 10)) + assert not heartbeat.records and heartbeat.observations[-1].event == "book_heartbeat" + update = sync.admit_message( + okx_message( + config, + "update", + 11, + 10, + bids=[["99", "0"], ["100", "2.5"]], + ) + ) + assert len(update.records) == 1 + assert update.observations[-1].event == "absent_level_delete" + with pytest.raises(ResyncRequired, match="maintenance"): + sync.admit_message(okx_message(config, "update", 9, 11)) + assert sync.live is False + with pytest.raises(ResyncRequired, match="fresh books snapshot"): + sync.admit_message(okx_message(config, "update", 12, 11)) + + +def test_okx_gap_heartbeat_levels_errors_and_envelope_guards() -> None: + config = stream(Provider.OKX, MarketKind.USDT_PERPETUAL) + sync = OKXBookSynchronizer(config, resolver()) + with pytest.raises(ResyncRequired, match="subscription error"): + sync.admit_message(frame(config, {"event": "error", "code": "60012", "msg": "bad"})) + with pytest.raises(ResyncRequired, match="envelope"): + sync.admit_message(frame(config, {"arg": {}, "data": {}})) + wrong = okx_message(config, "snapshot", 10, -1, bids=[["100", "1"]], asks=[["101", "1"]]) + value = json.loads(wrong.payload) + value["arg"]["instId"] = "WRONG" + with pytest.raises(ResyncRequired, match="unexpected"): + sync.admit_message(frame(config, value)) + sync.admit_message( + okx_message(config, "snapshot", 10, -1, bids=[["100", "1"]], asks=[["101", "1"]]) + ) + with pytest.raises(ResyncRequired, match="prevSeqId"): + sync.admit_message(okx_message(config, "update", 12, 9)) + with pytest.raises(ResyncRequired, match="heartbeat contained"): + sync.admit_message(okx_message(config, "update", 10, 10, bids=[["100", "2"]])) + unsupported = json.loads(okx_message(config, "update", 11, 10).payload) + unsupported["action"] = "partial" + with pytest.raises(ResyncRequired, match="unsupported"): + sync.admit_message(frame(config, unsupported)) + + +def test_binance_wire_and_book_negative_branches_are_fail_closed() -> None: + config = stream(Provider.BINANCE, MarketKind.SPOT) + with pytest.raises(ValidationError, match="BinanceBookSynchronizer"): + BinanceBookSynchronizer(stream(Provider.OKX, MarketKind.SPOT), resolver()) + + top_level_list = replace(frame(config, {}), payload=b"[]") + with pytest.raises(ResyncRequired, match="JSON object"): + BinanceBookSynchronizer(config, resolver()).admit_snapshot(top_level_list) + + wrapped = replace( + binance_snapshot(config), + payload=json.dumps( + { + "data": { + "lastUpdateId": 100, + "bids": [["100", "2"]], + "asks": [["101", "3"]], + } + } + ).encode(), + ) + assert BinanceBookSynchronizer(config, resolver()).admit_snapshot(wrapped).records + + invalid_snapshots = ( + ({"lastUpdateId": 100, "bids": [["NaN", "1"]], "asks": []}, "positive price"), + ({"lastUpdateId": 100, "bids": [["100", "-1"]], "asks": []}, "non-negative"), + ({"lastUpdateId": 100, "bids": [["100"]], "asks": []}, "price/quantity"), + ({"lastUpdateId": 100, "bids": [["100", "0"]], "asks": []}, "zero quantity"), + ( + { + "lastUpdateId": 100, + "bids": [["100", "1"], ["100", "2"]], + "asks": [], + }, + "duplicate prices", + ), + ) + for payload, message in invalid_snapshots: + with pytest.raises(ResyncRequired, match=message): + BinanceBookSynchronizer(config, resolver()).admit_snapshot( + frame(config, payload, transport="https") + ) + + sync = BinanceBookSynchronizer(config, resolver()) + sync.admit_snapshot(binance_snapshot(config)) + sync.admit_update(binance_update(config, 100, 101)) + + missing_time = json.loads(binance_update(config, 102, 102).payload) + missing_time.pop("T") + missing_time.pop("E") + with pytest.raises(ResyncRequired, match="event time is missing"): + sync.admit_update(frame(config, missing_time)) + with pytest.raises(ResyncRequired, match="price/quantity"): + sync.admit_update(binance_update(config, 102, 102, bids=[["100"]])) + with pytest.raises(ResyncRequired, match="duplicate prices"): + sync.admit_update(binance_update(config, 102, 102, bids=[["100", "2"], ["100", "3"]])) + with pytest.raises(ResyncRequired, match="cross or lock"): + sync.admit_update(binance_update(config, 102, 102, bids=[["102", "1"]])) + deleted = sync.admit_update(binance_update(config, 102, 102, bids=[["100", "0"]])) + assert deleted.records and not deleted.observations + + +def test_mapping_disagreement_and_okx_non_object_item_require_resync() -> None: + class WrongResolver: + def resolve(self, *_args, **_kwargs) -> str: + return "CRYPTO:WRONG:INSTRUMENT" + + binance = stream(Provider.BINANCE, MarketKind.SPOT) + with pytest.raises(ResyncRequired, match="disagrees"): + BinanceBookSynchronizer(binance, WrongResolver()).admit_snapshot(binance_snapshot(binance)) + + okx = stream(Provider.OKX, MarketKind.SPOT) + with pytest.raises(ValidationError, match="OKXBookSynchronizer"): + OKXBookSynchronizer(binance, resolver()) + malformed_item = frame( + okx, + { + "arg": {"channel": "books", "instId": okx.native_symbol}, + "action": "snapshot", + "data": [1], + }, + ) + with pytest.raises(ResyncRequired, match="data item must be an object"): + OKXBookSynchronizer(okx, resolver()).admit_message(malformed_item) + with pytest.raises(ResyncRequired, match="disagrees"): + OKXBookSynchronizer(okx, WrongResolver()).admit_message( + okx_message(okx, "snapshot", 10, -1) + ) + + +def test_sequence_normalizer_no_change_branch_is_strict() -> None: + sequences = BookSequenceNormalizer() + with pytest.raises(ValidationError, match="before BookSnapshot"): + sequences.advance_without_levels( + "BTCUSDT", provider_previous_sequence=1, provider_sequence=2 + ) + sequences.snapshot("BTCUSDT", 10) + with pytest.raises(ValidationError, match="no-change gap"): + sequences.advance_without_levels( + "BTCUSDT", provider_previous_sequence=9, provider_sequence=11 + ) + with pytest.raises(ValidationError, match="did not advance"): + sequences.advance_without_levels( + "BTCUSDT", provider_previous_sequence=10, provider_sequence=10 + ) + sequences.advance_without_levels("BTCUSDT", provider_previous_sequence=10, provider_sequence=11) + assert sequences.delta( + "BTCUSDT", + provider_previous_sequence=11, + provider_sequence=12, + level_count=1, + ) + + +def test_normalized_epoch_journal_publishes_complete_raw_lineage(tmp_path: Path) -> None: + hot, _, guard = storage(tmp_path) + config = stream(Provider.BINANCE, MarketKind.SPOT) + writer = RawSegmentWriter( + hot, + config.stream_id, + config.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=guard, + policy=POLICY, + ) + writer.append(frame(config, {"raw": 1}, 1)) + writer.append(frame(config, {"raw": 2}, 2)) + segment = writer.drain_completed()[0] + + sync = BinanceBookSynchronizer(config, resolver()) + records = list(sync.admit_snapshot(binance_snapshot(config)).records) + records.extend(sync.admit_update(binance_update(config, 100, 101)).records) + journal = NormalizedEpochJournal( + hot, + epoch_id="epoch-one", + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=POLICY, + max_part_rows=1, + ) + journal.append(records) + journal.record_segment(segment) + receipt = journal.finalize(created_at=NOW) + assert receipt.accepted_rows == len(records) + assert receipt.quarantined_rows == 0 + assert receipt.raw_segments == 1 + assert len(receipt.journal_parts) == len(records) + assert receipt.normalized_snapshot_id + snapshot = load_normalized_snapshot(hot, receipt.normalized_snapshot_id) + assert snapshot.rows == len(records) + assert Path(receipt.receipt_path).is_file() + + +def test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible(tmp_path: Path) -> None: + hot, _, guard = storage(tmp_path) + config = stream(Provider.BINANCE, MarketKind.SPOT) + empty = NormalizedEpochJournal( + hot, + epoch_id="empty", + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=POLICY, + ) + empty_receipt = empty.finalize(created_at=NOW) + assert empty_receipt.records == 0 and empty_receipt.normalized_snapshot_id is None + with pytest.raises(ValidationError, match="closed"): + empty.append([]) + + aborted = NormalizedEpochJournal( + hot, + epoch_id="aborted", + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=POLICY, + ) + assert aborted.abort_visible("injected gap").is_file() + + no_raw = NormalizedEpochJournal( + hot, + epoch_id="no-raw", + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=POLICY, + ) + sync = BinanceBookSynchronizer(config, resolver()) + no_raw.append(sync.admit_snapshot(binance_snapshot(config)).records) + with pytest.raises(ValidationError, match="require Raw"): + no_raw.finalize(created_at=NOW) + + writer = RawSegmentWriter( + hot, + config.stream_id, + config.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=guard, + policy=POLICY, + ) + writer.append(frame(config, {"raw": 1}, 1)) + writer.append(frame(config, {"raw": 2}, 2)) + segment = writer.drain_completed()[0] + duplicate = NormalizedEpochJournal( + hot, + epoch_id="duplicate", + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=POLICY, + ) + duplicate.record_segment(segment) + with pytest.raises(ValidationError, match="duplicate Raw"): + duplicate.record_segment(segment) + duplicate.abort_visible("test complete") + + +def test_epoch_configuration_closed_abort_and_part_integrity_guards(tmp_path: Path) -> None: + hot, _, guard = storage(tmp_path) + config = stream(Provider.BINANCE, MarketKind.SPOT) + common = { + "hot_root": hot, + "stream_id": config.stream_id, + "provider": "binance", + "venue": "BINANCE", + "storage_guard": guard, + "policy": POLICY, + } + with pytest.raises(ValidationError, match="max_part_rows"): + NormalizedEpochJournal(epoch_id="invalid-parts", max_part_rows=0, **common) + + closed = NormalizedEpochJournal(epoch_id="closed-abort", **common) + closed.finalize(created_at=NOW) + assert closed.abort_visible("visible after close").is_file() + + tampered = NormalizedEpochJournal(epoch_id="tampered", max_part_rows=1, **common) + tampered.append(({"event_type": "test", "value": 1},)) + part = tampered.root / tampered._parts[0].relative_path + part.write_bytes(part.read_bytes() + b" ") + with pytest.raises(ValidationError, match="journal part integrity changed"): + tuple(tampered._iter_records()) + tampered.abort_visible("integrity failure") diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index 1bba472..3352b35 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -37,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == version("quant-data-kit") == "0.6.1" + assert qdk.__version__ == version("quant-data-kit") == "0.7.0" for name in ( "write_raw_bytes", "write_normalized_events", @@ -55,7 +55,7 @@ def test_build_and_runtime_versions_share_one_authoritative_source() -> None: project = (Path(__file__).parents[1] / "pyproject.toml").read_text(encoding="utf-8") assert 'dynamic = ["version"]' in project assert 'version = { attr = "quant_data_kit._version.__version__" }' in project - assert '\nversion = "0.6.1"\n' not in project + assert '\nversion = "0.7.0"\n' not in project def test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable(tmp_path: Path) -> None: diff --git a/tools/check_branch_coverage.py b/tools/check_branch_coverage.py index 3d0aadf..c5b8198 100644 --- a/tools/check_branch_coverage.py +++ b/tools/check_branch_coverage.py @@ -18,6 +18,13 @@ "src/quant_data_kit/adapters_v2/binance.py": 90, "src/quant_data_kit/adapters_v2/okx.py": 90, "src/quant_data_kit/adapters_v2/cn_neutral.py": 90, + "src/quant_data_kit/capture_v2/models.py": 90, + "src/quant_data_kit/capture_v2/storage.py": 90, + "src/quant_data_kit/capture_v2/synchronizers.py": 90, + "src/quant_data_kit/capture_v2/epoch.py": 90, + "src/quant_data_kit/capture_v2/transport.py": 90, + "src/quant_data_kit/capture_v2/collector.py": 90, + "src/quant_data_kit/capture_v2/cli.py": 90, } ALL_SOURCE_THRESHOLD = 80 diff --git a/validation/m7-capture/coverage.json b/validation/m7-capture/coverage.json new file mode 100644 index 0000000..4b4cafd --- /dev/null +++ b/validation/m7-capture/coverage.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.16.0", "timestamp": "2026-08-29T21:37:03.988796", "branch_coverage": true, "show_contexts": false}, "files": {"src\\quant_data_kit\\__init__.py": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\_version.py": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\__init__.py": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\base.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 41, 42, 43, 44, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 142, 143, 144, 145, 146, 151, 153, 154, 156, 169, 170, 171, 172, 173, 177, 178, 179, 181, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 216, 217, 218, 219], "summary": {"covered_lines": 124, "num_statements": 126, "percent_covered": 97.46835443037975, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 6, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 2, "covered_branches": 30, "missing_branches": 2, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [45, 193], "excluded_lines": [50, 51, 52, 53, 54, 55], "executed_branches": [[43, 44], [57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99], [133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[43, 45], [192, 193]], "functions": {"AdapterContext.instrument": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "AdapterContext.session_id": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter.transaction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51], "start_line": 51, "executed_branches": [], "missing_branches": []}, "ProviderAdapter.adapt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [53], "start_line": 53, "executed_branches": [], "missing_branches": []}, "utc_from_milliseconds": {"executed_lines": [57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "utc_from_text": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73]], "missing_branches": []}, "fixed": {"executed_lines": [77, 78, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "event_identity": {"executed_lines": [95, 96, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [[95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}, "BookSequenceNormalizer.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.transaction": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.snapshot": {"executed_lines": [132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[133, 134], [133, 135]], "missing_branches": []}, "BookSequenceNormalizer.heartbeat": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [[142, 143], [142, 144], [145, -140], [145, 146]], "missing_branches": []}, "BookSequenceNormalizer.reset": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.advance_without_levels": {"executed_lines": [169, 170, 171, 172, 173, 177, 178, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179]], "missing_branches": []}, "BookSequenceNormalizer.delta": {"executed_lines": [189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [193], "excluded_lines": [], "start_line": 181, "executed_branches": [[189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "adapt_fixture_messages": {"executed_lines": [216, 217, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 66, 76, 84, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AdapterInstrument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "AdapterContext": {"executed_lines": [34, 35, 36, 37, 42, 43, 44], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 27, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51, 53], "start_line": 48, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer": {"executed_lines": [116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 146, 153, 154, 169, 170, 171, 172, 173, 177, 178, 179, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [193], "excluded_lines": [], "start_line": 112, "executed_branches": [[133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212, 216, 217, 218, 219], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [[57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\binance.py": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 69, "num_statements": 70, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]], "functions": {"BinanceFixtureAdapter.__init__": {"executed_lines": [40, 41, 42, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, 41], [40, 42]], "missing_branches": []}, "BinanceFixtureAdapter._event_id": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.transaction": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.adapt": {"executed_lines": [56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 55, "executed_branches": [[63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BinanceFixtureAdapter": {"executed_lines": [40, 41, 42, 43, 44, 47, 48, 52, 53, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32, "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\cn_neutral.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 109, 110, 111], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": [], "functions": {"CNNeutralFixtureAdapter.__init__": {"executed_lines": [32, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [[32, 33], [32, 34]], "missing_branches": []}, "CNNeutralFixtureAdapter.transaction": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CNNeutralFixtureAdapter.adapt": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "CNNeutralFixtureAdapter._level": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CNNeutralFixtureAdapter": {"executed_lines": [32, 33, 34, 35, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 111], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\okx.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 86, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 293, 294, 295, 296], "summary": {"covered_lines": 146, "num_statements": 152, "percent_covered": 95.09803921568627, "percent_covered_display": "95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.05263157894737, "percent_statements_covered_display": "96", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]], "functions": {"OKXFixtureAdapter.__init__": {"executed_lines": [44, 45, 46, 47, 48, 49], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 46]], "missing_branches": []}, "OKXFixtureAdapter.transaction": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[62, 63], [62, 66]], "missing_branches": []}, "OKXFixtureAdapter._book_transaction": {"executed_lines": [70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [[76, 77], [76, 79], [80, 81], [80, 83]], "missing_branches": []}, "OKXFixtureAdapter._require_fresh_snapshot": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._signed_crc32": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._checksum": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 106], [102, 103], [104, 101], [104, 105]], "missing_branches": [[102, 104]]}, "OKXFixtureAdapter._apply_book_message": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [123, 127, 132, 133], "excluded_lines": [], "start_line": 109, "executed_branches": [[116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135]], "missing_branches": [[122, 123], [126, 127]]}, "OKXFixtureAdapter.adapt": {"executed_lines": [138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.34146341463415, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [229, 234], "excluded_lines": [], "start_line": 137, "executed_branches": [[145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[228, 229]]}, "OKXFixtureAdapter._book_level": {"executed_lines": [295, 296], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"OKXFixtureAdapter": {"executed_lines": [44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 87, 88, 89, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 295, 296], "summary": {"covered_lines": 118, "num_statements": 124, "percent_covered": 94.31818181818181, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.16129032258064, "percent_statements_covered_display": "95", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "start_line": 35, "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\calendar.py": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]], "functions": {"trading_days_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": [[14, 15], [14, 16]]}, "load_sse_trade_dates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [22, 24, 25, 26, 27], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "is_trading_day": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [31, 32, 33, 34], "excluded_lines": [], "start_line": 30, "executed_branches": [], "missing_branches": [[32, 33], [32, 34]]}, "": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]]}}}, "src\\quant_data_kit\\capture_v2\\__init__.py": {"executed_lines": [3, 8, 9, 33, 48, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 8, 9, 33, 48, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 8, 9, 33, 48, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 22, 24, 34, 47, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 126, 127, 133, 139, 144, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 169], "summary": {"covered_lines": 94, "num_statements": 95, "percent_covered": 98.49624060150376, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.94736842105263, "percent_statements_covered_display": "99", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [170], "excluded_lines": [], "executed_branches": [[51, 52], [51, 59], [52, -50], [52, 53], [54, 55], [54, 58], [59, -50], [59, 60], [60, -50], [60, 61], [69, 70], [69, 71], [73, 74], [73, 75], [77, 78], [77, 79], [82, 83], [82, 84], [100, 101], [100, 102], [102, 103], [102, 104], [105, 106], [105, 118], [106, 107], [106, 108], [109, 110], [109, 111], [152, 153], [152, 154], [154, 155], [154, 159], [155, 156], [155, 157], [159, 160], [159, 161], [169, -1]], "missing_branches": [[169, 170]], "functions": {"_reject_credentials": {"executed_lines": [51, 52, 53, 54, 55, 58, 59, 60, 61], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[51, 52], [51, 59], [52, -50], [52, 53], [54, 55], [54, 58], [59, -50], [59, 60], [60, -50], [60, 61]], "missing_branches": []}, "load_capture_config": {"executed_lines": [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 95, 96], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[69, 70], [69, 71], [73, 74], [73, 75], [77, 78], [77, 79], [82, 83], [82, 84]], "missing_branches": []}, "_streams": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [105, 106], [105, 118], [106, 107], [106, 108], [109, 110], [109, 111]], "missing_branches": []}, "_parser": {"executed_lines": [122, 126, 127, 133, 139, 144], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "main_capture": {"executed_lines": [148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147, "executed_branches": [[152, 153], [152, 154], [154, 155], [154, 159], [155, 156], [155, 157], [159, 160], [159, 161]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 22, 24, 34, 47, 50, 64, 99, 121, 147, 169], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [170], "excluded_lines": [], "start_line": 1, "executed_branches": [[169, -1]], "missing_branches": [[169, 170]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 22, 24, 34, 47, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 126, 127, 133, 139, 144, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 169], "summary": {"covered_lines": 94, "num_statements": 95, "percent_covered": 98.49624060150376, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.94736842105263, "percent_statements_covered_display": "99", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [170], "excluded_lines": [], "start_line": 1, "executed_branches": [[51, 52], [51, 59], [52, -50], [52, 53], [54, 55], [54, 58], [59, -50], [59, 60], [60, -50], [60, 61], [69, 70], [69, 71], [73, 74], [73, 75], [77, 78], [77, 79], [82, 83], [82, 84], [100, 101], [100, 102], [102, 103], [102, 104], [105, 106], [105, 118], [106, 107], [106, 108], [109, 110], [109, 111], [152, 153], [152, 154], [154, 155], [154, 159], [155, 156], [155, 157], [159, 160], [159, 161], [169, -1]], "missing_branches": [[169, 170]]}}}, "src\\quant_data_kit\\capture_v2\\collector.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 34, 42, 48, 55, 56, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 124, 125, 126, 127, 130, 131, 132, 133, 136, 139, 140, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 179, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 213, 216, 217, 218, 219, 224, 230, 231, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 257, 258, 259, 262, 263, 265, 266, 270, 271, 272, 273, 274, 275, 277, 279, 281, 286, 287, 288, 289, 290, 291, 292, 296, 297, 298, 299, 300, 302, 303, 304, 308, 309, 311, 316, 317, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 336, 337, 339, 340, 341, 342, 343, 358, 359, 360, 361, 362, 364, 371, 372, 373, 374, 377, 393, 394, 395, 396, 397, 398, 399, 401, 402, 403, 404, 405, 415, 416, 417, 418, 419, 420, 421, 422, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 440, 441, 443, 444, 445, 446, 448, 449, 450, 451, 483, 486, 500, 501, 502, 503, 504, 510, 517, 518, 519, 520, 521, 523, 524, 526, 527, 528, 529, 530, 531, 532, 534, 535, 536, 537, 538, 563, 572, 573, 574, 575, 576, 612, 628, 634, 639, 648, 658, 659, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 686], "summary": {"covered_lines": 305, "num_statements": 327, "percent_covered": 92.87598944591029, "percent_covered_display": "93", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 93.27217125382263, "percent_statements_covered_display": "93", "num_branches": 52, "num_partial_branches": 5, "covered_branches": 47, "missing_branches": 5, "percent_branches_covered": 90.38461538461539, "percent_branches_covered_display": "90"}, "missing_lines": [107, 108, 134, 135, 202, 203, 212, 214, 215, 225, 229, 301, 375, 376, 533, 577, 578, 579, 604, 683, 684, 685], "excluded_lines": [], "executed_branches": [[109, 110], [109, 111], [111, 112], [111, 113], [118, 119], [118, 124], [130, 131], [130, 132], [200, 201], [201, 204], [206, 207], [224, 230], [230, 231], [230, 237], [245, 246], [245, 248], [253, 254], [253, 262], [274, 275], [274, 277], [300, 302], [304, -281], [304, 308], [327, 328], [327, 330], [332, -311], [332, 336], [394, 395], [394, 396], [397, -393], [397, 398], [402, 403], [402, 404], [416, -415], [416, 417], [418, 419], [418, 420], [421, 416], [421, 422], [425, 426], [425, 427], [428, 429], [428, 431], [435, 436], [435, 437], [444, 445], [444, 446]], "missing_branches": [[200, 253], [201, 202], [206, 212], [224, 225], [300, 301]], "functions": {"_json_object": {"executed_lines": [105, 106, 109, 110, 111, 112, 113], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [107, 108], "excluded_lines": [], "start_line": 104, "executed_branches": [[109, 110], [109, 111], [111, 112], [111, 113]], "missing_branches": []}, "_frame_metadata": {"executed_lines": [117, 118, 119, 120, 124, 125, 126, 127, 130, 131, 132, 133, 136], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [134, 135], "excluded_lines": [], "start_line": 116, "executed_branches": [[118, 119], [118, 124], [130, 131], [130, 132]], "missing_branches": []}, "CaptureStreamRunner.__init__": {"executed_lines": [156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 179, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner.run": {"executed_lines": [199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 213, 216, 217, 218, 219, 224, 230, 231, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 257, 258, 259, 262, 263], "summary": {"covered_lines": 43, "num_statements": 50, "percent_covered": 82.8125, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 86.0, "percent_statements_covered_display": "86", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [202, 203, 212, 214, 215, 225, 229], "excluded_lines": [], "start_line": 198, "executed_branches": [[200, 201], [201, 204], [206, 207], [224, 230], [230, 231], [230, 237], [245, 246], [245, 248], [253, 254], [253, 262]], "missing_branches": [[200, 253], [201, 202], [206, 212], [224, 225]]}, "CaptureStreamRunner._run_connection": {"executed_lines": [266, 270, 271, 272, 273, 274, 275, 277, 279], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [[274, 275], [274, 277]], "missing_branches": []}, "CaptureStreamRunner._run_binance": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 296, 297, 298, 299, 300, 302, 303, 304, 308, 309], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [301], "excluded_lines": [], "start_line": 281, "executed_branches": [[300, 302], [304, -281], [304, 308]], "missing_branches": [[300, 301]]}, "CaptureStreamRunner._run_okx": {"executed_lines": [316, 317, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 336, 337], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311, "executed_branches": [[327, 328], [327, 330], [332, -311], [332, 336]], "missing_branches": []}, "CaptureStreamRunner._receive_frame": {"executed_lines": [340, 341, 342, 343, 358, 359, 360, 361, 362], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._https_frame": {"executed_lines": [371, 372, 373, 374, 377], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [375, 376], "excluded_lines": [], "start_line": 364, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._apply_outcome": {"executed_lines": [394, 395, 396, 397, 398, 399], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393, "executed_branches": [[394, 395], [394, 396], [397, -393], [397, 398]], "missing_branches": []}, "CaptureStreamRunner._new_epoch": {"executed_lines": [402, 403, 404, 405], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401, "executed_branches": [[402, 403], [402, 404]], "missing_branches": []}, "CaptureStreamRunner._drain_segments": {"executed_lines": [416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [[416, -415], [416, 417], [418, 419], [418, 420], [421, 416], [421, 422]], "missing_branches": []}, "CaptureStreamRunner._finalize_epoch": {"executed_lines": [425, 426, 427, 428, 429, 430, 431, 432], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424, "executed_branches": [[425, 426], [425, 427], [428, 429], [428, 431]], "missing_branches": []}, "CaptureStreamRunner._pause": {"executed_lines": [435, 436, 437, 440, 441], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 434, "executed_branches": [[435, 436], [435, 437]], "missing_branches": []}, "CaptureStreamRunner._alert": {"executed_lines": [444, 445, 446], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443, "executed_branches": [[444, 445], [444, 446]], "missing_branches": []}, "CaptureStreamRunner._report": {"executed_lines": [449, 450, 451], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 448, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.__init__": {"executed_lines": [500, 501, 502, 503, 504, 510, 517, 518, 519, 520, 521], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight": {"executed_lines": [524], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight_only": {"executed_lines": [527, 528, 529, 530, 531, 532, 534, 535, 536, 537, 538, 563], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [533], "excluded_lines": [], "start_line": 526, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.run": {"executed_lines": [573, 574, 575, 576, 612, 628, 634, 639], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [577, 578, 579, 604], "excluded_lines": [], "start_line": 572, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._write_report": {"executed_lines": [658, 659, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 686], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [683, 684, 685], "excluded_lines": [], "start_line": 648, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 34, 42, 48, 55, 56, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 116, 139, 140, 198, 265, 281, 311, 339, 364, 393, 401, 415, 424, 434, 443, 448, 483, 486, 523, 526, 572, 648], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CaptureStreamReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "CaptureRunReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner": {"executed_lines": [156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 179, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 213, 216, 217, 218, 219, 224, 230, 231, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 257, 258, 259, 262, 263, 266, 270, 271, 272, 273, 274, 275, 277, 279, 286, 287, 288, 289, 290, 291, 292, 296, 297, 298, 299, 300, 302, 303, 304, 308, 309, 316, 317, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 336, 337, 340, 341, 342, 343, 358, 359, 360, 361, 362, 371, 372, 373, 374, 377, 394, 395, 396, 397, 398, 399, 402, 403, 404, 405, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 435, 436, 437, 440, 441, 444, 445, 446, 449, 450, 451], "summary": {"covered_lines": 159, "num_statements": 169, "percent_covered": 92.95774647887323, "percent_covered_display": "93", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.0828402366864, "percent_statements_covered_display": "94", "num_branches": 44, "num_partial_branches": 5, "covered_branches": 39, "missing_branches": 5, "percent_branches_covered": 88.63636363636364, "percent_branches_covered_display": "89"}, "missing_lines": [202, 203, 212, 214, 215, 225, 229, 301, 375, 376], "excluded_lines": [], "start_line": 139, "executed_branches": [[200, 201], [201, 204], [206, 207], [224, 230], [230, 231], [230, 237], [245, 246], [245, 248], [253, 254], [253, 262], [274, 275], [274, 277], [300, 302], [304, -281], [304, 308], [327, 328], [327, 330], [332, -311], [332, 336], [394, 395], [394, 396], [397, -393], [397, 398], [402, 403], [402, 404], [416, -415], [416, 417], [418, 419], [418, 420], [421, 416], [421, 422], [425, 426], [425, 427], [428, 429], [428, 431], [435, 436], [435, 437], [444, 445], [444, 446]], "missing_branches": [[200, 253], [201, 202], [206, 212], [224, 225], [300, 301]]}, "CryptoL2CaptureCoordinator": {"executed_lines": [500, 501, 502, 503, 504, 510, 517, 518, 519, 520, 521, 524, 527, 528, 529, 530, 531, 532, 534, 535, 536, 537, 538, 563, 573, 574, 575, 576, 612, 628, 634, 639, 658, 659, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 686], "summary": {"covered_lines": 45, "num_statements": 53, "percent_covered": 84.90566037735849, "percent_covered_display": "85", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 84.90566037735849, "percent_statements_covered_display": "85", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [533, 577, 578, 579, 604, 683, 684, 685], "excluded_lines": [], "start_line": 483, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 34, 42, 48, 55, 56, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 124, 125, 126, 127, 130, 131, 132, 133, 136, 139, 140, 198, 265, 281, 311, 339, 364, 393, 401, 415, 424, 434, 443, 448, 483, 486, 523, 526, 572, 648], "summary": {"covered_lines": 101, "num_statements": 105, "percent_covered": 96.46017699115045, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 96.19047619047619, "percent_statements_covered_display": "96", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [107, 108, 134, 135], "excluded_lines": [], "start_line": 1, "executed_branches": [[109, 110], [109, 111], [111, 112], [111, 113], [118, 119], [118, 124], [130, 131], [130, 132]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\epoch.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 22, 24, 25, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 63, 66, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 140, 141, 156, 157, 158, 159, 160, 161, 162, 163, 181, 182, 183, 184, 185, 186, 187, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 222, 223, 224, 226, 227, 236, 237, 238, 239, 240, 241, 242, 243, 244, 249, 251, 253, 254, 255, 257, 258, 259], "summary": {"covered_lines": 154, "num_statements": 158, "percent_covered": 96.7741935483871, "percent_covered_display": "97", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 97.46835443037975, "percent_statements_covered_display": "97", "num_branches": 28, "num_partial_branches": 2, "covered_branches": 26, "missing_branches": 2, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [245, 246, 250, 260], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [78, 79], [78, 80], [107, -105], [107, 108], [115, 107], [115, 116], [121, 122], [121, 123], [135, 136], [135, 137], [182, 183], [182, 187], [204, 205], [204, 206], [237, -236], [237, 238], [239, 240], [239, 241], [242, 237], [242, 243], [249, 251], [254, -253], [254, 255], [259, -257]], "missing_branches": [[249, 250], [259, 260]], "functions": {"_sha256_file": {"executed_lines": [56, 57, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "NormalizedEpochJournal.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 95, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[78, 79], [78, 80]], "missing_branches": []}, "NormalizedEpochJournal.append": {"executed_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [[107, -105], [107, 108], [115, 107], [115, 116]], "missing_branches": []}, "NormalizedEpochJournal.record_segment": {"executed_lines": [119, 120, 121, 122, 123, 124], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [[121, 122], [121, 123]], "missing_branches": []}, "NormalizedEpochJournal.records": {"executed_lines": [128], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.finalize": {"executed_lines": [131, 132, 133, 134, 135, 136, 137, 140, 141, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130, "executed_branches": [[135, 136], [135, 137]], "missing_branches": []}, "NormalizedEpochJournal.abort_visible": {"executed_lines": [182, 183, 184, 185, 186, 187, 195, 196, 197, 198, 199, 200, 201], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [[182, 183], [182, 187]], "missing_branches": []}, "NormalizedEpochJournal._seal_part": {"executed_lines": [204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 222, 223, 224], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203, "executed_branches": [[204, 205], [204, 206]], "missing_branches": []}, "NormalizedEpochJournal._publish_normalized": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._iter_records": {"executed_lines": [237, 238, 239, 240, 241, 242, 243, 244, 249, 251], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 76.92307692307692, "percent_statements_covered_display": "77", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [245, 246, 250], "excluded_lines": [], "start_line": 236, "executed_branches": [[237, -236], [237, 238], [239, 240], [239, 241], [242, 237], [242, 243], [249, 251]], "missing_branches": [[249, 250]]}, "NormalizedEpochJournal._require_open": {"executed_lines": [254, 255], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 253, "executed_branches": [[254, -253], [254, 255]], "missing_branches": []}, "NormalizedEpochJournal.__del__": {"executed_lines": [258, 259], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [260], "excluded_lines": [], "start_line": 257, "executed_branches": [[259, -257]], "missing_branches": [[259, 260]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 22, 24, 25, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 63, 66, 105, 118, 126, 127, 130, 181, 203, 226, 236, 253, 257], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"EpochPart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "NormalizedEpochReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 95, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 128, 131, 132, 133, 134, 135, 136, 137, 140, 141, 156, 157, 158, 159, 160, 161, 162, 163, 182, 183, 184, 185, 186, 187, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 222, 223, 224, 227, 237, 238, 239, 240, 241, 242, 243, 244, 249, 251, 254, 255, 258, 259], "summary": {"covered_lines": 97, "num_statements": 101, "percent_covered": 95.2755905511811, "percent_covered_display": "95", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 96.03960396039604, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [245, 246, 250, 260], "excluded_lines": [], "start_line": 63, "executed_branches": [[78, 79], [78, 80], [107, -105], [107, 108], [115, 107], [115, 116], [121, 122], [121, 123], [135, 136], [135, 137], [182, 183], [182, 187], [204, 205], [204, 206], [237, -236], [237, 238], [239, 240], [239, 241], [242, 237], [242, 243], [249, 251], [254, -253], [254, 255], [259, -257]], "missing_branches": [[249, 250], [259, 260]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 22, 24, 25, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 63, 66, 105, 118, 126, 127, 130, 181, 203, 226, 236, 253, 257], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\models.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 32, 33, 34, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 51, 52, 55, 56, 65, 71, 72, 73, 75, 79, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 122, 123, 126, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 178, 179, 181, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, 215, 216, 217, 220, 221, 222, 223, 224, 239, 256, 262, 263, 264, 276, 279, 284, 285, 297, 298, 299, 300, 301, 302, 309, 317, 318, 319, 320, 328, 329, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 352, 353, 354, 355, 358, 359, 360, 361, 366, 367, 368, 369, 370, 371, 372, 373, 374, 376, 377, 378, 380, 381, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 414, 429, 430, 431, 434, 435, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 449, 450, 453, 455, 456, 467, 470, 471, 488, 498, 499, 500, 501, 502, 503, 504, 505, 506, 508, 509, 510, 512, 518, 519, 520, 526, 529, 533, 534, 536, 539, 543, 550, 551, 561, 562, 563, 564, 580, 581, 584, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 599], "summary": {"covered_lines": 295, "num_statements": 298, "percent_covered": 98.65591397849462, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 5, "percent_statements_covered": 98.99328859060402, "percent_statements_covered_display": "99", "num_branches": 74, "num_partial_branches": 2, "covered_branches": 72, "missing_branches": 2, "percent_branches_covered": 97.29729729729729, "percent_branches_covered_display": "97"}, "missing_lines": [76, 127, 161], "excluded_lines": [66, 67, 68, 69, 70], "executed_branches": [[89, 90], [89, 91], [103, 104], [103, 105], [105, 106], [105, 107], [107, 108], [107, 109], [109, -102], [109, 110], [113, 114], [113, 115], [116, 117], [116, 118], [137, 138], [137, 139], [139, -136], [139, 140], [158, 159], [158, 162], [160, 158], [162, 163], [162, 164], [164, 165], [164, 167], [165, 166], [165, 169], [167, 168], [167, 169], [169, -157], [169, 170], [196, 197], [196, 201], [198, 199], [198, 200], [201, 202], [201, 203], [203, 204], [203, 205], [206, 207], [206, 208], [208, -195], [208, 209], [222, 223], [222, 256], [256, 262], [256, 276], [300, 301], [300, 302], [328, 329], [328, 333], [353, 354], [353, 355], [355, 358], [355, 359], [366, 367], [366, 368], [368, 369], [368, 370], [402, 403], [402, 404], [431, 434], [431, 435], [519, 520], [519, 533], [562, 563], [591, 592], [591, 595], [595, 596], [595, 597], [598, -587], [598, 599]], "missing_branches": [[160, 161], [562, 584]], "functions": {"utc_text": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "canonical_json_bytes": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": []}, "Clock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [66], "start_line": 66, "executed_branches": [], "missing_branches": []}, "Clock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 68, "executed_branches": [], "missing_branches": []}, "SystemClock.now": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "SystemClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.__init__": {"executed_lines": [83, 84], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.now": {"executed_lines": [87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "RetryPolicy.__post_init__": {"executed_lines": [103, 104, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [[103, 104], [103, 105], [105, 106], [105, 107], [107, 108], [107, 109], [109, -102], [109, 110]], "missing_branches": []}, "RetryPolicy.delay": {"executed_lines": [113, 114, 115, 116, 117, 118, 122, 123], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [[113, 114], [113, 115], [116, 117], [116, 118]], "missing_branches": []}, "random_jitter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [127], "excluded_lines": [], "start_line": 126, "executed_branches": [], "missing_branches": []}, "SegmentRotation.__post_init__": {"executed_lines": [137, 138, 139, 140], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[137, 138], [137, 139], [139, -136], [139, 140]], "missing_branches": []}, "StreamConfig.__post_init__": {"executed_lines": [158, 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [161], "excluded_lines": [], "start_line": 157, "executed_branches": [[158, 159], [158, 162], [160, 158], [162, 163], [162, 164], [164, 165], [164, 167], [165, 166], [165, 169], [167, 168], [167, 169], [169, -157], [169, 170]], "missing_branches": [[160, 161]]}, "StreamConfig.capability": {"executed_lines": [174, 175, 176], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173, "executed_branches": [], "missing_branches": []}, "StreamConfig.mapping_source": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "CaptureConfig.__post_init__": {"executed_lines": [196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195, "executed_branches": [[196, 197], [196, 201], [198, 199], [198, 200], [201, 202], [201, 203], [203, 204], [203, 205], [206, 207], [206, 208], [208, -195], [208, 209]], "missing_branches": []}, "CaptureConfig.providers": {"executed_lines": [213], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "CaptureConfig.capabilities": {"executed_lines": [217], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "default_crypto_l2_streams": {"executed_lines": [221, 222, 223, 224, 239, 256, 262, 263, 264, 276], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 220, "executed_branches": [[222, 223], [222, 256], [256, 262], [256, 276]], "missing_branches": []}, "default_symbol_mappings": {"executed_lines": [284, 285], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "SymbolMappingResolver.__init__": {"executed_lines": [299, 300, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298, "executed_branches": [[300, 301], [300, 302]], "missing_branches": []}, "SymbolMappingResolver.resolve": {"executed_lines": [317, 318, 319, 320, 328, 329, 333], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309, "executed_branches": [[328, 329], [328, 333]], "missing_branches": []}, "RawFrame.__post_init__": {"executed_lines": [353, 354, 355, 358, 359, 360, 361, 366, 367, 368, 369, 370, 371, 372, 373, 374], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [[353, 354], [353, 355], [355, 358], [355, 359], [366, 367], [366, 368], [368, 369], [368, 370]], "missing_branches": []}, "RawFrame.raw_sha256": {"executed_lines": [378], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [], "missing_branches": []}, "RawFrame.record": {"executed_lines": [381], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380, "executed_branches": [], "missing_branches": []}, "RawFrame.from_record": {"executed_lines": [402, 403, 404, 405, 406, 407, 408, 409, 414, 429, 430, 431, 434, 435], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401, "executed_branches": [[402, 403], [402, 404], [431, 434], [431, 435]], "missing_branches": []}, "AuditEvent.__post_init__": {"executed_lines": [450, 453], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [], "missing_branches": []}, "AuditEvent.payload": {"executed_lines": [456, 467], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 455, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.__init__": {"executed_lines": [498, 499, 500, 501, 502, 503, 504, 505, 506], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.events": {"executed_lines": [510], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 509, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.transition": {"executed_lines": [518, 519, 520, 526, 529, 533, 534], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 512, "executed_branches": [[519, 520], [519, 533]], "missing_branches": []}, "CaptureStateMachine.audit": {"executed_lines": [539], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine._record": {"executed_lines": [550, 551, 561, 562, 563, 564, 580, 581, 584], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [[562, 563]], "missing_branches": [[562, 584]]}, "assert_m7_scope": {"executed_lines": [588, 589, 590, 591, 592, 595, 596, 597, 598, 599], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 587, "executed_branches": [[591, 592], [591, 595], [595, 596], [595, 597], [598, -587], [598, 599]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 32, 33, 34, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 51, 55, 65, 71, 72, 75, 79, 82, 86, 95, 96, 97, 98, 99, 100, 102, 112, 126, 130, 131, 132, 133, 134, 136, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 172, 173, 178, 179, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 211, 212, 215, 216, 220, 279, 297, 298, 309, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 352, 376, 377, 380, 400, 401, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 449, 455, 470, 471, 488, 508, 509, 512, 536, 543, 587], "summary": {"covered_lines": 136, "num_statements": 136, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67, 69, 70], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "MarketKind": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "CaptureState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "Clock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [66, 68], "start_line": 65, "executed_branches": [], "missing_branches": []}, "SystemClock": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock": {"executed_lines": [83, 84, 87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "RetryPolicy": {"executed_lines": [103, 104, 105, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 122, 123], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [[103, 104], [103, 105], [105, 106], [105, 107], [107, 108], [107, 109], [109, -102], [109, 110], [113, 114], [113, 115], [116, 117], [116, 118]], "missing_branches": []}, "SegmentRotation": {"executed_lines": [137, 138, 139, 140], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[137, 138], [137, 139], [139, -136], [139, 140]], "missing_branches": []}, "StreamConfig": {"executed_lines": [158, 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 174, 175, 176, 181], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [161], "excluded_lines": [], "start_line": 144, "executed_branches": [[158, 159], [158, 162], [160, 158], [162, 163], [162, 164], [164, 165], [164, 167], [165, 166], [165, 169], [167, 168], [167, 169], [169, -157], [169, 170]], "missing_branches": [[160, 161]]}, "CaptureConfig": {"executed_lines": [196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 213, 217], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185, "executed_branches": [[196, 197], [196, 201], [198, 199], [198, 200], [201, 202], [201, 203], [203, 204], [203, 205], [206, 207], [206, 208], [208, -195], [208, 209]], "missing_branches": []}, "SymbolMappingResolver": {"executed_lines": [299, 300, 301, 302, 317, 318, 319, 320, 328, 329, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [[300, 301], [300, 302], [328, 329], [328, 333]], "missing_branches": []}, "RawFrame": {"executed_lines": [353, 354, 355, 358, 359, 360, 361, 366, 367, 368, 369, 370, 371, 372, 373, 374, 378, 381, 402, 403, 404, 405, 406, 407, 408, 409, 414, 429, 430, 431, 434, 435], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[353, 354], [353, 355], [355, 358], [355, 359], [366, 367], [366, 368], [368, 369], [368, 370], [402, 403], [402, 404], [431, 434], [431, 435]], "missing_branches": []}, "AuditEvent": {"executed_lines": [450, 453, 456, 467], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 439, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine": {"executed_lines": [498, 499, 500, 501, 502, 503, 504, 505, 506, 510, 518, 519, 520, 526, 529, 533, 534, 539, 550, 551, 561, 562, 563, 564, 580, 581, 584], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 96.7741935483871, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [], "excluded_lines": [], "start_line": 470, "executed_branches": [[519, 520], [519, 533], [562, 563]], "missing_branches": [[562, 584]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 32, 33, 34, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 51, 52, 55, 56, 65, 71, 72, 75, 79, 82, 86, 95, 96, 97, 98, 99, 100, 102, 112, 126, 130, 131, 132, 133, 134, 136, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 172, 173, 178, 179, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 211, 212, 215, 216, 220, 221, 222, 223, 224, 239, 256, 262, 263, 264, 276, 279, 284, 285, 297, 298, 309, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 352, 376, 377, 380, 400, 401, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 449, 455, 470, 471, 488, 508, 509, 512, 536, 543, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 599], "summary": {"covered_lines": 160, "num_statements": 161, "percent_covered": 99.41520467836257, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 99.37888198757764, "percent_statements_covered_display": "99", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [127], "excluded_lines": [67, 69, 70], "start_line": 1, "executed_branches": [[222, 223], [222, 256], [256, 262], [256, 276], [591, 592], [591, 595], [595, 596], [595, 597], [598, -587], [598, 599]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 25, 32, 34, 35, 36, 39, 43, 44, 45, 46, 49, 50, 51, 52, 54, 55, 56, 57, 58, 61, 65, 69, 70, 71, 74, 75, 77, 78, 84, 85, 87, 88, 89, 90, 91, 92, 101, 102, 111, 112, 113, 114, 115, 116, 117, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 171, 172, 173, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 195, 198, 201, 212, 213, 214, 215, 216, 217, 218, 220, 221, 222, 224, 225, 226, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 269, 270, 271, 272, 277, 278, 279, 290, 291, 292, 293, 294, 296, 297, 298, 306, 307, 309, 310, 311, 312, 313, 314, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 335, 338, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 367, 368, 369, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 389, 391, 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 409, 410, 411, 412, 413, 414, 437, 438, 439, 448, 461, 462, 463, 464, 465, 466, 467, 470, 471, 472, 473, 474, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 526, 527, 530, 533, 542, 543, 544, 545, 546, 548, 549, 550, 551, 554, 555, 556, 564, 565, 566, 567, 568, 569, 570, 571, 572, 574, 575, 576, 577, 585, 586, 587, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 633, 634, 640, 646, 647, 648, 668, 669, 670, 676, 677, 685, 686, 694, 695, 696, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711], "summary": {"covered_lines": 373, "num_statements": 397, "percent_covered": 93.47368421052632, "percent_covered_display": "93", "missing_lines": 24, "excluded_lines": 6, "percent_statements_covered": 93.95465994962217, "percent_statements_covered_display": "94", "num_branches": 78, "num_partial_branches": 1, "covered_branches": 71, "missing_branches": 7, "percent_branches_covered": 91.02564102564102, "percent_branches_covered_display": "91"}, "missing_lines": [149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 175, 176, 628, 629, 697, 698], "excluded_lines": [62, 63, 64, 66, 67, 68], "executed_branches": [[56, 57], [56, 58], [88, 89], [88, 90], [112, 113], [112, 114], [127, 128], [127, 129], [130, 131], [130, 132], [135, 136], [135, 141], [137, 138], [137, 139], [173, 174], [236, 237], [236, 243], [237, 238], [237, 239], [239, 240], [239, 241], [241, 236], [241, 242], [243, 244], [243, 245], [250, 251], [250, 256], [254, 255], [254, 256], [271, 272], [271, 279], [292, 293], [292, 294], [306, -296], [306, 307], [313, -309], [313, 314], [372, 373], [372, 374], [374, 375], [374, 376], [378, 379], [378, 382], [380, 381], [380, 382], [385, -371], [385, 389], [397, 398], [397, 399], [402, 403], [402, 409], [403, 402], [403, 404], [507, 508], [507, 509], [514, 515], [514, 518], [515, 516], [515, 517], [526, -512], [526, 527], [550, 551], [550, 554], [575, 576], [575, 577], [646, 647], [646, 648], [704, -702], [704, 705], [705, 706], [705, 707]], "missing_branches": [[152, 153], [152, 154], [156, 157], [156, 160], [158, 159], [158, 160], [173, 175]], "functions": {"VolumeIdentity.__post_init__": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[56, 57], [56, 58]], "missing_branches": []}, "VolumeIdentityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [62], "start_line": 62, "executed_branches": [], "missing_branches": []}, "CapacityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [66], "start_line": 66, "executed_branches": [], "missing_branches": []}, "default_capacity_probe": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity": {"executed_lines": [75, 77, 78, 84, 85, 87, 88, 89, 90, 91, 92, 101, 102, 111, 112, 113, 114, 115, 116, 117, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[88, 89], [88, 90], [112, 113], [112, 114], [127, 128], [127, 129], [130, 131], [130, 132], [135, 136], [135, 141], [137, 138], [137, 139]], "missing_branches": []}, "_linux_physical_devices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168], "excluded_lines": [], "start_line": 148, "executed_branches": [], "missing_branches": [[152, 153], [152, 154], [156, 157], [156, 160], [158, 159], [158, 160]]}, "default_volume_identity": {"executed_lines": [172, 173, 174], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [175, 176], "excluded_lines": [], "start_line": 171, "executed_branches": [[173, 174]], "missing_branches": [[173, 175]]}, "StoragePreflight.alert": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.__init__": {"executed_lines": [212, 213, 214, 215, 216, 217, 218], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._tree_size": {"executed_lines": [222], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._minimum_free": {"executed_lines": [226], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.preflight": {"executed_lines": [232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 269, 270, 271, 272, 277, 278, 279], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [[236, 237], [236, 243], [237, 238], [237, 239], [239, 240], [239, 241], [241, 236], [241, 242], [243, 244], [243, 245], [250, 251], [250, 256], [254, 255], [254, 256], [271, 272], [271, 279]], "missing_branches": []}, "CaptureStorageGuard.require_preflight": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [[292, 293], [292, 294]], "missing_branches": []}, "CaptureStorageGuard.require_hot_capacity": {"executed_lines": [297, 298, 306, 307], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, -296], [306, 307]], "missing_branches": []}, "CaptureStorageGuard.require_archive_capacity": {"executed_lines": [310, 311, 312, 313, 314], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309, "executed_branches": [[313, -309], [313, 314]], "missing_branches": []}, "RawSegmentWriter.__init__": {"executed_lines": [349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 338, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.pending_messages": {"executed_lines": [365], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 364, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.segment_count": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.append": {"executed_lines": [372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 389], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371, "executed_branches": [[372, 373], [372, 374], [374, 375], [374, 376], [378, 379], [378, 382], [380, 381], [380, 382], [385, -371], [385, 389]], "missing_branches": []}, "RawSegmentWriter.drain_completed": {"executed_lines": [392, 393, 394], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.flush": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404, 405, 409, 410, 411, 412, 413, 414, 437, 438, 439, 448, 461, 462, 463, 464, 465, 466, 467], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[397, 398], [397, 399], [402, 403], [402, 409], [403, 402], [403, 404]], "missing_branches": []}, "_sha256_file": {"executed_lines": [505, 506, 507, 508, 509], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [[507, 508], [507, 509]], "missing_branches": []}, "_atomic_immutable_write": {"executed_lines": [513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 526, 527], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 512, "executed_branches": [[514, 515], [514, 518], [515, 516], [515, 517], [526, -512], [526, 527]], "missing_branches": []}, "LocalArchiveController.__init__": {"executed_lines": [542, 543, 544, 545, 546], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 533, "executed_branches": [], "missing_branches": []}, "LocalArchiveController.preflight": {"executed_lines": [549, 550, 551, 554, 555, 556, 564, 565, 566, 567, 568, 569, 570, 571, 572, 574, 575, 576, 577, 585, 586, 587], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 548, "executed_branches": [[550, 551], [550, 554], [575, 576], [575, 577]], "missing_branches": []}, "LocalArchiveController.archive_segment": {"executed_lines": [598, 599, 600, 601, 602, 603, 604, 605, 606, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 633, 634, 640, 646, 647, 648, 668, 669, 670, 676, 677], "summary": {"covered_lines": 33, "num_statements": 35, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [628, 629], "excluded_lines": [], "start_line": 597, "executed_branches": [[646, 647], [646, 648]], "missing_branches": []}, "LocalArchiveController._hot_object_dir": {"executed_lines": [686, 694, 695, 696, 699], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [697, 698], "excluded_lines": [], "start_line": 685, "executed_branches": [], "missing_branches": []}, "iter_segment_frames": {"executed_lines": [703, 704, 705, 706, 707, 708, 709, 710, 711], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 702, "executed_branches": [[704, -702], [704, 705], [705, 706], [705, 707]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 25, 32, 34, 35, 36, 39, 43, 44, 45, 46, 49, 50, 51, 52, 54, 61, 65, 69, 74, 148, 171, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 198, 201, 220, 221, 224, 225, 231, 290, 296, 309, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 335, 338, 363, 364, 367, 368, 371, 391, 396, 470, 471, 472, 473, 474, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 504, 512, 530, 533, 548, 597, 685, 702], "summary": {"covered_lines": 118, "num_statements": 118, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [63, 64, 67, 68], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CapturePausedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "DiskCapacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "VolumeIdentity": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[56, 57], [56, 58]], "missing_branches": []}, "VolumeIdentityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [62], "start_line": 61, "executed_branches": [], "missing_branches": []}, "CapacityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [66], "start_line": 65, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.DiskExtent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.VolumeDiskExtents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [], "missing_branches": []}, "StoragePreflight": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard": {"executed_lines": [212, 213, 214, 215, 216, 217, 218, 222, 226, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 255, 256, 257, 258, 259, 260, 261, 269, 270, 271, 272, 277, 278, 279, 291, 292, 293, 294, 297, 298, 306, 307, 310, 311, 312, 313, 314], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [[236, 237], [236, 243], [237, 238], [237, 239], [239, 240], [239, 241], [241, 236], [241, 242], [243, 244], [243, 245], [250, 251], [250, 256], [254, 255], [254, 256], [271, 272], [271, 279], [292, 293], [292, 294], [306, -296], [306, 307], [313, -309], [313, 314]], "missing_branches": []}, "RawSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter": {"executed_lines": [349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 365, 369, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 389, 392, 393, 394, 397, 398, 399, 400, 401, 402, 403, 404, 405, 409, 410, 411, 412, 413, 414, 437, 438, 439, 448, 461, 462, 463, 464, 465, 466, 467], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[372, 373], [372, 374], [374, 375], [374, 376], [378, 379], [378, 382], [380, 381], [380, 382], [385, -371], [385, 389], [397, 398], [397, 399], [402, 403], [402, 409], [403, 402], [403, 404]], "missing_branches": []}, "ArchivePreflightReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "SegmentArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "LocalArchiveController": {"executed_lines": [542, 543, 544, 545, 546, 549, 550, 551, 554, 555, 556, 564, 565, 566, 567, 568, 569, 570, 571, 572, 574, 575, 576, 577, 585, 586, 587, 598, 599, 600, 601, 602, 603, 604, 605, 606, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 633, 634, 640, 646, 647, 648, 668, 669, 670, 676, 677, 686, 694, 695, 696, 699], "summary": {"covered_lines": 65, "num_statements": 69, "percent_covered": 94.66666666666667, "percent_covered_display": "95", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.20289855072464, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [628, 629, 697, 698], "excluded_lines": [], "start_line": 530, "executed_branches": [[550, 551], [550, 554], [575, 576], [575, 577], [646, 647], [646, 648]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 25, 32, 34, 35, 36, 39, 43, 44, 45, 46, 49, 50, 51, 52, 54, 61, 65, 69, 70, 71, 74, 75, 77, 78, 84, 85, 87, 88, 89, 90, 91, 92, 101, 102, 111, 112, 113, 114, 115, 116, 117, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 148, 171, 172, 173, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 198, 201, 220, 221, 224, 225, 231, 290, 296, 309, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 335, 338, 363, 364, 367, 368, 371, 391, 396, 470, 471, 472, 473, 474, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 526, 527, 530, 533, 548, 597, 685, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711], "summary": {"covered_lines": 187, "num_statements": 207, "percent_covered": 88.7029288702929, "percent_covered_display": "89", "missing_lines": 20, "excluded_lines": 4, "percent_statements_covered": 90.33816425120773, "percent_statements_covered_display": "90", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 7, "percent_branches_covered": 78.125, "percent_branches_covered_display": "78"}, "missing_lines": [149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 168, 175, 176], "excluded_lines": [63, 64, 67, 68], "start_line": 1, "executed_branches": [[88, 89], [88, 90], [112, 113], [112, 114], [127, 128], [127, 129], [130, 131], [130, 132], [135, 136], [135, 141], [137, 138], [137, 139], [173, 174], [507, 508], [507, 509], [514, 515], [514, 518], [515, 516], [515, 517], [526, -512], [526, 527], [704, -702], [704, 705], [705, 706], [705, 707]], "missing_branches": [[152, 153], [152, 154], [156, 157], [156, 160], [158, 159], [158, 160], [173, 175]]}}}, "src\\quant_data_kit\\capture_v2\\synchronizers.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 180, 181, 184, 187, 188, 189, 190, 191, 192, 204, 205, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 330, 331, 332, 338, 339, 340, 341, 344, 347, 348, 349, 350, 351, 352, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 278, "num_statements": 302, "percent_covered": 93.87755102040816, "percent_covered_display": "94", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 92.05298013245033, "percent_statements_covered_display": "92", "num_branches": 90, "num_partial_branches": 0, "covered_branches": 90, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98, 250, 251, 323, 324, 422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101], [112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174], [188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341], [348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": [], "functions": {"_json_object": {"executed_lines": [48, 49, 52, 53, 54, 55, 56], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 47, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56]], "missing_branches": []}, "_received_milliseconds": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_provider_event_milliseconds": {"executed_lines": [65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [70, 71], "excluded_lines": [], "start_line": 64, "executed_branches": [[65, 66], [65, 72], [67, 65], [67, 68]], "missing_branches": []}, "_utc_event_datetime": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_price": {"executed_lines": [85, 86, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [87, 88], "excluded_lines": [], "start_line": 84, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "_quantity": {"executed_lines": [95, 96, 99, 100, 101], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [97, 98], "excluded_lines": [], "start_line": 94, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "_TrackedBook.__init__": {"executed_lines": [106, 107], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "_TrackedBook.snapshot": {"executed_lines": [110, 111, 112, 113, 114], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [[112, 113], [112, 114]], "missing_branches": []}, "_TrackedBook._snapshot_side": {"executed_lines": [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [[119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128]], "missing_branches": []}, "_TrackedBook.filter_delta": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[143, 144], [143, 145]], "missing_branches": []}, "_TrackedBook._filter_side": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "_TrackedBook.commit": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.__init__": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [[188, 189], [188, 190]], "missing_branches": []}, "BinanceBookSynchronizer.live": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_snapshot": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_update": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328], "summary": {"covered_lines": 42, "num_statements": 46, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 241, "executed_branches": [[242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301]], "missing_branches": []}, "BinanceBookSynchronizer._assert_mapping": {"executed_lines": [331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330, "executed_branches": [[340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer.__init__": {"executed_lines": [348, 349, 350, 351, 352, 363, 364], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347, "executed_branches": [[348, 349], [348, 350]], "missing_branches": []}, "OKXBookSynchronizer.live": {"executed_lines": [368], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "OKXBookSynchronizer.admit_message": {"executed_lines": [371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403]], "missing_branches": []}, "OKXBookSynchronizer._admit_item": {"executed_lines": [415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 47, "num_statements": 57, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 82.45614035087719, "percent_statements_covered_display": "82", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 409, "executed_branches": [[415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 59, 64, 75, 84, 94, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"ResyncRequired": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "Observation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "NormalizationOutcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "_TrackedBook": {"executed_lines": [106, 107, 110, 111, 112, 113, 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 138, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 181], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "BinanceBookSynchronizer": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 75, "num_statements": 79, "percent_covered": 96.11650485436893, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.9367088607595, "percent_statements_covered_display": "95", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 184, "executed_branches": [[188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer": {"executed_lines": [348, 349, 350, 351, 352, 363, 364, 368, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 79, "num_statements": 89, "percent_covered": 91.73553719008264, "percent_covered_display": "92", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.76404494382022, "percent_statements_covered_display": "89", "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 344, "executed_branches": [[348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 78, "num_statements": 88, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98], "excluded_lines": [], "start_line": 1, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\transport.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 41, 42, 43, 45, 46, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 75, 76, 77, 81, 82, 83, 84, 85, 86, 87, 91, 92, 95, 98, 99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 13, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36], "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65], [83, 84], [83, 85], [85, 86], [85, 87], [99, 100], [99, 101]], "missing_branches": [], "functions": {"HttpClient.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 22, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 26, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [28], "start_line": 28, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30], "start_line": 30, "executed_branches": [], "missing_branches": []}, "WebSocketConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 34, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient.get": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[41, 42], [41, 43]], "missing_branches": []}, "UrllibHttpClient._get": {"executed_lines": [47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [[61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection.__init__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.send": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.receive": {"executed_lines": [76, 77, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "_WebsocketsConnection.close": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "WebsocketsConnector.connect": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"HttpResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "HttpClient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 21, "executed_branches": [], "missing_branches": []}, "WebSocketConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26, 28, 30], "start_line": 25, "executed_branches": [], "missing_branches": []}, "WebSocketConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 33, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient": {"executed_lines": [41, 42, 43, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection": {"executed_lines": [70, 73, 76, 77, 81, 82, 83, 84, 85, 86, 87, 92], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "WebsocketsConnector": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\catalog.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 52, 56, 57, 58, 62, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 88, 89, 91], "summary": {"covered_lines": 58, "num_statements": 62, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]], "functions": {"DataCatalog.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32], [31, 36]], "missing_branches": []}, "DataCatalog.ensure_default_stack": {"executed_lines": [41, 42, 43, 44, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47]], "missing_branches": []}, "DataCatalog.list_stack_dependencies": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "DataCatalog.register_stack_dependency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "DataCatalog.save": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "DataCatalog.register": {"executed_lines": [65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[70, 71]], "missing_branches": [[70, 74]]}, "DataCatalog.list": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "DataCatalog.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [92, 93], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "DataCatalog": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 57, 58, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 89], "summary": {"covered_lines": 31, "num_statements": 35, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.57142857142857, "percent_statements_covered_display": "89", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "start_line": 25, "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]], "functions": {"main_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "main_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "main_catalog": {"executed_lines": [36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [55, 56, 57], "excluded_lines": [], "start_line": 35, "executed_branches": [[54, 59]], "missing_branches": [[54, 55]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 68], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [69], "excluded_lines": [], "start_line": 1, "executed_branches": [[68, -1]], "missing_branches": [[68, 69]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]]}}}, "src\\quant_data_kit\\curated.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 4, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 48, 49, 50], "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]], "functions": {"Curator.curate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_canonical": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_hash_bytes": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "_hash_file": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [[94, 95], [94, 96]], "missing_branches": []}, "_json_value": {"executed_lines": [100, 101, 102, 103, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [105], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108]], "missing_branches": [[104, 105]]}, "_dataset_segment": {"executed_lines": [112, 113, 114, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [[112, 113], [112, 114], [114, 127], [114, 128]], "missing_branches": []}, "_revision_segment": {"executed_lines": [132, 133, 134, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [], "missing_branches": []}, "_utc": {"executed_lines": [139, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[144, 145], [144, 146]], "missing_branches": []}, "_utc_text": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "_fixed_decimal": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [], "missing_branches": []}, "_fixed": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "build_session_bars": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244]], "missing_branches": []}, "_arrow_ready_bar": {"executed_lines": [248, 249, 250, 251, 252, 255, 256, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256]], "missing_branches": []}, "_snapshot_identity": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "_revision_record": {"executed_lines": [284, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [], "missing_branches": []}, "_validate_revision_record": {"executed_lines": [299, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295, "executed_branches": [[301, 302], [301, 303], [304, -295], [304, 305]], "missing_branches": []}, "_recover_missing_revision": {"executed_lines": [318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 85.18518518518519, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [320, 324], "excluded_lines": [], "start_line": 311, "executed_branches": [[319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337]], "missing_branches": [[319, 320], [323, 324]]}, "_publish_curated_snapshot": {"executed_lines": [357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [389], "excluded_lines": [], "start_line": 349, "executed_branches": [[364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399]], "missing_branches": [[388, 389]]}, "_write_curated_bars": {"executed_lines": [413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [[416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472]], "missing_branches": []}, "curate_trade_bars_from_snapshot": {"executed_lines": [524, 525, 526, 527, 528, 529, 536], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [[527, 528], [527, 529]], "missing_branches": []}, "_load_curated_snapshot": {"executed_lines": [554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652], "summary": {"covered_lines": 59, "num_statements": 61, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.72131147540983, "percent_statements_covered_display": "97", "num_branches": 36, "num_partial_branches": 2, "covered_branches": 34, "missing_branches": 2, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [620, 624], "excluded_lines": [], "start_line": 547, "executed_branches": [[556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[619, 620], [623, 624]]}, "load_curated_snapshot": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 87, 91, 99, 111, 131, 138, 149, 153, 157, 161, 247, 262, 283, 295, 311, 349, 402, 511, 547, 655], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Curator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 45, "executed_branches": [], "missing_branches": []}, "CuratedPartition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "CuratedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]]}}}, "src\\quant_data_kit\\data_lake.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 222, 223, 224, 226, 227, 229, 230, 232, 234, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017, 2020, 2023, 2024, 2026, 2027, 2028], "summary": {"covered_lines": 1066, "num_statements": 1115, "percent_covered": 94.28379287155346, "percent_covered_display": "94", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 95.60538116591928, "percent_statements_covered_display": "96", "num_branches": 372, "num_partial_branches": 32, "covered_branches": 336, "missing_branches": 36, "percent_branches_covered": 90.3225806451613, "percent_branches_covered_display": "90"}, "missing_lines": [259, 388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88], [237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266], [318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958], [1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": [[256, 259], [387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]], "functions": {"StoragePolicy.__post_init__": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "RawObjectManifest.reference": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__init__": {"executed_lines": [222, 223, 224], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__len__": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__iter__": {"executed_lines": [230, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__getitem__": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [259], "excluded_lines": [], "start_line": 234, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258]], "missing_branches": [[256, 259]]}, "EventClaimSequence.__eq__": {"executed_lines": [262, 263, 264, 265, 266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": []}, "EventClaimSequence.__repr__": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268, "executed_branches": [], "missing_branches": []}, "_canonical_json_bytes": {"executed_lines": [307], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306, "executed_branches": [], "missing_branches": []}, "_json_evidence": {"executed_lines": [318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332]], "missing_branches": []}, "_sha256_bytes": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "_sha256_file": {"executed_lines": [344, 345, 346, 347, 348], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[346, 347], [346, 348]], "missing_branches": []}, "_utc_datetime": {"executed_lines": [352, 357, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [[357, 358], [357, 359]], "missing_branches": []}, "_utc_text": {"executed_lines": [363], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "_segment": {"executed_lines": [367, 368, 369, 374, 375], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [[367, 368], [367, 369], [369, 374], [369, 375]], "missing_branches": []}, "_partition_segment": {"executed_lines": [379, 380, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381], [381, 382], [381, 383]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [387, 389, 390, 391, 392, 393], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [388], "excluded_lines": [], "start_line": 386, "executed_branches": [[387, 389]], "missing_branches": [[387, 388]]}, "_resolved_lake_root": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404]], "missing_branches": []}, "_validate_lake_path": {"executed_lines": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433], "summary": {"covered_lines": 21, "num_statements": 25, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.0, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [426, 427, 431, 432], "excluded_lines": [], "start_line": 407, "executed_branches": [[416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424]], "missing_branches": []}, "_mkdir_in_lake": {"executed_lines": [437, 442, 443, 444, 445, 446], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [], "missing_branches": []}, "_atomic_write_bytes": {"executed_lines": [451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [[455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472]], "missing_branches": []}, "_lake_lock": {"executed_lines": [477, 478, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476, "executed_branches": [], "missing_branches": []}, "_stable_staging_directory": {"executed_lines": [494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [[498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510]], "missing_branches": []}, "_tree_size": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513, "executed_branches": [[514, 515], [514, 516]], "missing_branches": []}, "_disk_probe_path": {"executed_lines": [520, 521, 522, 523], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[521, 522], [521, 523]], "missing_branches": []}, "evaluate_capacity": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526, "executed_branches": [[536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563]], "missing_branches": []}, "require_collection_capacity": {"executed_lines": [583, 591, 592, 593], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[591, 592], [591, 593]], "missing_branches": []}, "_raw_manifest_identity": {"executed_lines": [597], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "_raw_key_dir": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 614, "executed_branches": [], "missing_branches": []}, "_raw_object_dir": {"executed_lines": [630], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "_raw_tombstone_path": {"executed_lines": [642], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "_raw_deleting_dir": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "_raw_claim_path": {"executed_lines": [666], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "_raw_lock_identity": {"executed_lines": [676], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_raw_key_claim": {"executed_lines": [683, 691], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "_load_raw_key_claim": {"executed_lines": [698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [[705, 706], [705, 707], [708, 709], [708, 712]], "missing_branches": []}, "_ensure_raw_key_claim": {"executed_lines": [716, 717, 718, 719, 720, 725], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [[717, 718], [717, 719]], "missing_branches": []}, "_raw_stage_prefix": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 728, "executed_branches": [], "missing_branches": []}, "_validate_raw_manifest": {"executed_lines": [734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733, "executed_branches": [[734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760]], "missing_branches": []}, "_load_raw_from_dir": {"executed_lines": [770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792]], "missing_branches": []}, "_relocate_invalid_raw": {"executed_lines": [796, 797, 798, 799, 800, 801, 807, 808, 812], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795, "executed_branches": [], "missing_branches": []}, "_remove_staging_directory": {"executed_lines": [816, 817, 818, 819, 820], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [[818, 819], [818, 820]], "missing_branches": []}, "_recover_raw_staging": {"executed_lines": [828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [842, 849], "excluded_lines": [], "start_line": 823, "executed_branches": [[831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850]], "missing_branches": [[841, 842], [848, 849]]}, "write_raw_bytes": {"executed_lines": [869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [938, 946], "excluded_lines": [], "start_line": 858, "executed_branches": [[871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945]], "missing_branches": [[937, 938], [944, 946]]}, "_local_archive_path": {"executed_lines": [980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [989], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998]], "missing_branches": [[988, 989]]}, "_verify_archive_restore": {"executed_lines": [1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [], "missing_branches": []}, "_read_cleanup_audit": {"executed_lines": [1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [[1029, 1030], [1029, 1031]], "missing_branches": []}, "_load_archived_raw_reference": {"executed_lines": [1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1038, 1039, 1042, 1049, 1051], "excluded_lines": [], "start_line": 1034, "executed_branches": [[1041, 1043], [1050, 1052]], "missing_branches": [[1041, 1042], [1050, 1051]]}, "_validate_cleanup_receipt": {"executed_lines": [1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1055, "executed_branches": [[1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081]], "missing_branches": []}, "_finalize_raw_deleting": {"executed_lines": [1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1093, 1098, 1100, 1109, 1110, 1112], "excluded_lines": [], "start_line": 1084, "executed_branches": [[1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113]], "missing_branches": [[1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112]]}, "validate_raw_reference": {"executed_lines": [1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1132], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138]], "missing_branches": [[1131, 1132]]}, "load_raw_object": {"executed_lines": [1145, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [], "missing_branches": []}, "cleanup_archived_raw_object": {"executed_lines": [1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.53968253968254, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 86.04651162790698, "percent_statements_covered_display": "86", "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1175, 1176, 1179, 1181, 1190, 1203], "excluded_lines": [], "start_line": 1152, "executed_branches": [[1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217]], "missing_branches": [[1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218]]}, "_event_schema_id": {"executed_lines": [1239, 1240, 1241, 1242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "_stream_key": {"executed_lines": [1246, 1247, 1252, 1253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1245, "executed_branches": [], "missing_branches": []}, "_arrow_ready": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [1261], "excluded_lines": [], "start_line": 1256, "executed_branches": [[1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265]], "missing_branches": [[1260, 1261]]}, "_validated_table": {"executed_lines": [1270, 1271, 1274, 1275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1269, "executed_branches": [], "missing_branches": []}, "_normalized_snapshot_payload": {"executed_lines": [1287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1278, "executed_branches": [], "missing_branches": []}, "_validate_quarantine_batch": {"executed_lines": [1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1299, "executed_branches": [[1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318]], "missing_branches": []}, "_event_claim_reference": {"executed_lines": [1322, 1323, 1324, 1327, 1335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1321, "executed_branches": [], "missing_branches": []}, "_event_claim_path": {"executed_lines": [1345], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1344, "executed_branches": [], "missing_branches": []}, "_event_claim_payload": {"executed_lines": [1355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1354, "executed_branches": [], "missing_branches": []}, "_validate_event_claim_reference": {"executed_lines": [1366, 1374, 1378, 1379, 1380], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1377], "excluded_lines": [], "start_line": 1362, "executed_branches": [[1374, 1378], [1378, 1379], [1378, 1380]], "missing_branches": [[1374, 1377]]}, "_validate_event_claim": {"executed_lines": [1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1383, "executed_branches": [[1392, 1395], [1392, 1396]], "missing_branches": []}, "_recover_missing_event_claim": {"executed_lines": [1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427]], "missing_branches": []}, "_publish_event_claims": {"executed_lines": [1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1436, "executed_branches": [[1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460]], "missing_branches": []}, "_write_quarantine": {"executed_lines": [1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [1496, 1497, 1498], "excluded_lines": [], "start_line": 1463, "executed_branches": [[1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499]], "missing_branches": [[1495, 1496], [1496, 1495], [1496, 1497]]}, "_write_normalized_events_legacy": {"executed_lines": [1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761], "summary": {"covered_lines": 86, "num_statements": 98, "percent_covered": 84.55882352941177, "percent_covered_display": "85", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88", "num_branches": 38, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 9, "percent_branches_covered": 76.3157894736842, "percent_branches_covered_display": "76"}, "missing_lines": [1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751], "excluded_lines": [], "start_line": 1525, "executed_branches": [[1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757]], "missing_branches": [[1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751]]}, "write_normalized_events": {"executed_lines": [1780, 1782], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [], "missing_branches": []}, "write_normalized_batches": {"executed_lines": [1804, 1806], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [], "missing_branches": []}, "_safe_snapshot_partition": {"executed_lines": [1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1825], "excluded_lines": [], "start_line": 1817, "executed_branches": [[1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826]], "missing_branches": [[1824, 1825]]}, "_load_normalized_snapshot": {"executed_lines": [1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936], "summary": {"covered_lines": 62, "num_statements": 64, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 2, "covered_branches": 36, "missing_branches": 2, "percent_branches_covered": 94.73684210526316, "percent_branches_covered_display": "95"}, "missing_lines": [1888, 1912], "excluded_lines": [], "start_line": 1829, "executed_branches": [[1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936]], "missing_branches": [[1887, 1888], [1911, 1912]]}, "load_normalized_snapshot": {"executed_lines": [1940], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1939, "executed_branches": [], "missing_branches": []}, "read_normalized_events": {"executed_lines": [1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1943, "executed_branches": [[1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": []}, "DuckDBSnapshot.__init__": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1966, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988]], "missing_branches": []}, "DuckDBSnapshot.query": {"executed_lines": [1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1990, "executed_branches": [[1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBSnapshot.close": {"executed_lines": [2011], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2010, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__enter__": {"executed_lines": [2014], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2013, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__exit__": {"executed_lines": [2017], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2016, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.__init__": {"executed_lines": [2024], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2023, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.open_snapshot": {"executed_lines": [2027, 2028], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 316, 339, 343, 351, 362, 366, 378, 386, 396, 407, 436, 449, 475, 476, 485, 486, 513, 519, 526, 574, 596, 614, 629, 641, 653, 665, 675, 682, 697, 715, 728, 733, 763, 795, 815, 823, 858, 979, 1001, 1022, 1034, 1055, 1084, 1117, 1141, 1152, 1238, 1245, 1256, 1269, 1278, 1299, 1321, 1344, 1354, 1362, 1383, 1403, 1436, 1463, 1525, 1769, 1793, 1817, 1829, 1939, 1943, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CollectionStoppedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "StoragePolicy": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "CapacityDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "RawObjectManifest": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "RawObjectReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "RawKeyClaim": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "ArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "PartitionManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [], "missing_branches": []}, "EventClaimReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [], "missing_branches": []}, "EventClaimShardManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "EventClaimIndexManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "L2CheckpointManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "EventClaimSequence": {"executed_lines": [222, 223, 224, 227, 230, 232, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 262, 263, 264, 265, 266, 269], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.22641509433963, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [259], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": [[256, 259]]}, "NormalizedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "QuarantineEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [], "missing_branches": []}, "NormalizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2011, 2014, 2017], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1963, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBCatalog": {"executed_lines": [2024, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2020, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 992, "num_statements": 1040, "percent_covered": 93.95924308588064, "percent_covered_display": "94", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 95.38461538461539, "percent_statements_covered_display": "95", "num_branches": 334, "num_partial_branches": 31, "covered_branches": 299, "missing_branches": 35, "percent_branches_covered": 89.52095808383234, "percent_branches_covered_display": "90"}, "missing_lines": [388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "start_line": 1, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": [[387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]]}}}, "src\\quant_data_kit\\domain_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 38, "num_partial_branches": 0, "covered_branches": 38, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134], [161, 162], [161, 167], [173, 174], [173, 175], [195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": [], "functions": {"_required_text": {"executed_lines": [49, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 51]], "missing_branches": []}, "_optional_text": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "_validate_knowledge_interval": {"executed_lines": [62, 63, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [[68, 69], [68, 70]], "missing_branches": []}, "InstrumentSpec.__post_init__": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping.__post_init__": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession.__post_init__": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "dataclass_payload": {"executed_lines": [218, 219, 242, 243, 252, 253, 264], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [[218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}, "fixed_point_payload": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_time": {"executed_lines": [272], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_optional_time": {"executed_lines": [276], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 54, 58, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 267, 271, 275], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AssetClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "MarginMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "SessionPhase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "InstrumentSpec": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}}}, "src\\quant_data_kit\\exceptions.py": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"QuantDataKitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [], "missing_branches": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "ProviderError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\fixed_point.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 23, 25, 27, 29, 32, 33, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 56, 57], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]], "functions": {"FixedPoint.__post_init__": {"executed_lines": [23, 25, 27, 29], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [24, 26, 28, 30], "excluded_lines": [], "start_line": 22, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30]]}, "FixedPoint.from_decimal": {"executed_lines": [41, 42, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [43], "excluded_lines": [], "start_line": 33, "executed_branches": [[42, 44], [46, 47], [46, 48]], "missing_branches": [[42, 43]]}, "FixedPoint.to_decimal": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_positive": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_non_negative": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FixedPoint": {"executed_lines": [23, 25, 27, 29, 41, 42, 44, 45, 46, 47, 48, 51, 54, 57], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "start_line": 16, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\l2_replay.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 213, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 280, 281, 286, 287, 288, 292, 293, 294, 295, 296, 297, 298, 299, 300, 302, 303, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 326, 338, 339, 340, 343, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 368, 369, 370, 371, 372, 376, 377, 378, 379, 382], "summary": {"covered_lines": 225, "num_statements": 232, "percent_covered": 96.71052631578948, "percent_covered_display": "97", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 96.98275862068965, "percent_statements_covered_display": "97", "num_branches": 72, "num_partial_branches": 1, "covered_branches": 69, "missing_branches": 3, "percent_branches_covered": 95.83333333333333, "percent_branches_covered_display": "96"}, "missing_lines": [114, 208, 271, 272, 273, 275, 276], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [287, -280], [287, 288], [293, 294], [293, 295], [295, 296], [295, 297], [299, -292], [299, 300], [307, 308], [307, 309], [309, -302], [309, 310], [313, 314], [313, 315], [350, 351], [350, 352], [352, 353], [352, 354], [358, 359], [358, 377], [360, 361], [360, 362], [368, 358], [368, 369], [371, 372], [371, 376], [378, 379], [378, 382]], "missing_branches": [[205, 208], [272, 273], [272, 275]], "functions": {"_canonical": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "_level": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.initialized": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.sequence": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply": {"executed_lines": [96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101]], "missing_branches": []}, "L2BookReconstructor.apply_snapshot": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_snapshot_state": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply_delta": {"executed_lines": [113], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [114], "excluded_lines": [], "start_line": 112, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_delta_state": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_without_checkpoint": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126], [126, 127], [126, 129]], "missing_branches": []}, "L2BookReconstructor._apply_validated_without_checkpoint": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[134, 135], [134, 137], [137, 138], [137, 140]], "missing_branches": []}, "L2BookReconstructor._apply_validated_snapshot_state": {"executed_lines": [143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [[144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160]], "missing_branches": []}, "L2BookReconstructor._apply_validated_delta_state": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [208], "excluded_lines": [], "start_line": 170, "executed_branches": [[171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206]], "missing_branches": [[205, 208]]}, "L2BookReconstructor._apply_validated_uniform_upsert_batch": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278], "summary": {"covered_lines": 22, "num_statements": 27, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 81.48148148148148, "percent_statements_covered_display": "81", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259]], "missing_branches": [[272, 273], [272, 275]]}, "L2BookReconstructor._assert_identity": {"executed_lines": [281, 286, 287, 288], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[287, -280], [287, 288]], "missing_branches": []}, "L2BookReconstructor._assert_time_advances": {"executed_lines": [293, 294, 295, 296, 297, 298, 299, 300], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [[293, 294], [293, 295], [295, 296], [295, 297], [299, -292], [299, 300]], "missing_branches": []}, "L2BookReconstructor._assert_book_valid": {"executed_lines": [307, 308, 309, 310], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[307, 308], [307, 309], [309, -302], [309, 310]], "missing_branches": []}, "L2BookReconstructor.checkpoint": {"executed_lines": [313, 314, 315, 316, 317, 326], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312, "executed_branches": [[313, 314], [313, 315]], "missing_branches": []}, "_parsed_timestamp": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "replay_l2": {"executed_lines": [349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 368, 369, 370, 371, 372, 376, 377, 378, 379, 382], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[350, 351], [350, 352], [352, 353], [352, 354], [358, 359], [358, 377], [360, 361], [360, 362], [368, 358], [368, 369], [371, 372], [371, 376], [378, 379], [378, 382]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 62, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 292, 302, 303, 312, 338, 339, 343], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"L2ReplayError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "ReconstructedLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "BookCheckpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "L2ReplayResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 89, 93, 96, 97, 98, 99, 100, 101, 104, 105, 108, 109, 110, 113, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 281, 286, 287, 288, 293, 294, 295, 296, 297, 298, 299, 300, 307, 308, 309, 310, 313, 314, 315, 316, 317, 326], "summary": {"covered_lines": 135, "num_statements": 142, "percent_covered": 95.0, "percent_covered_display": "95", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 95.07042253521126, "percent_statements_covered_display": "95", "num_branches": 58, "num_partial_branches": 1, "covered_branches": 55, "missing_branches": 3, "percent_branches_covered": 94.82758620689656, "percent_branches_covered_display": "95"}, "missing_lines": [114, 208, 271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 74, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [287, -280], [287, 288], [293, 294], [293, 295], [295, 296], [295, 297], [299, -292], [299, 300], [307, 308], [307, 309], [309, -302], [309, 310], [313, 314], [313, 315]], "missing_branches": [[205, 208], [272, 273], [272, 275]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 292, 302, 303, 312, 338, 339, 340, 343, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 368, 369, 370, 371, 372, 376, 377, 378, 379, 382], "summary": {"covered_lines": 90, "num_statements": 90, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[350, 351], [350, 352], [352, 353], [352, 354], [358, 359], [358, 377], [360, 361], [360, 362], [368, 358], [368, 369], [371, 372], [371, 376], [378, 379], [378, 382]], "missing_branches": []}}}, "src\\quant_data_kit\\market_clock_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 16, 18, 19, 21, 22, 23, 26, 27, 29, 30, 31, 40, 41, 42, 44, 53], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]], "functions": {"MarketClock.__init__": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [17, 20], "excluded_lines": [], "start_line": 15, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21]]}, "MarketClock.session_at": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "MarketClock.trading_day_at": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "MarketClock.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "MarketClock.next_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": [[60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MarketClock": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27, 30, 31, 41, 42], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 51.515151515151516, "percent_covered_display": "52", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 14, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\market_events_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 97, 98, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 271, 272, 273, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 264, "num_statements": 265, "percent_covered": 99.45205479452055, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.62264150943396, "percent_statements_covered_display": "99", "num_branches": 100, "num_partial_branches": 1, "covered_branches": 99, "missing_branches": 1, "percent_branches_covered": 99.0, "percent_branches_covered_display": "99"}, "missing_lines": [160], "excluded_lines": [], "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84], [98, -95], [98, 103], [120, 121], [120, 122], [122, -114], [122, 123], [137, -133], [137, 138], [157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186], [198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214], [228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241], [253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298], [310, -307], [310, 311], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": [[159, 160]], "functions": {"_required_text": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[34, 35], [34, 36]], "missing_branches": []}, "_positive": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, -39], [40, 41]], "missing_branches": []}, "_non_negative": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, -44], [45, 46]], "missing_branches": []}, "_MarketEventBase.__post_init__": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel.__post_init__": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent.__post_init__": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent.__post_init__": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent.__post_init__": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 153, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent.__post_init__": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent.__post_init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent.__post_init__": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent.__post_init__": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent.__post_init__": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent.__post_init__": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "_time": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [], "missing_branches": []}, "_base_payload": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331, "executed_branches": [], "missing_branches": []}, "_level_payload": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346, "executed_branches": [], "missing_branches": []}, "market_event_payload": {"executed_lines": [355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354, "executed_branches": [[356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 39, 44, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 331, 346, 354], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AggressorSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "BookSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "BookAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [], "missing_branches": []}, "_MarketEventBase": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 142, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 147, "num_statements": 147, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}}}, "src\\quant_data_kit\\normalized_v3.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 60, 61, 62, 63, 73, 74, 75, 76, 77, 78, 79, 80, 81, 91, 94, 98, 99, 100, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 159, 162, 163, 164, 167, 168, 169, 172, 173, 174, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 205, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 225, 226, 230, 231, 232, 233, 235, 236, 237, 238, 239, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 287, 288, 293, 294, 295, 296, 298, 299, 300, 301, 302, 303, 304, 305, 306, 311, 312, 313, 314, 320, 321, 322, 323, 324, 326, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 371, 372, 373, 374, 376, 377, 378, 379, 380, 381, 384, 385, 386, 387, 388, 389, 390, 392, 393, 398, 399, 400, 401, 405, 412, 413, 414, 415, 416, 417, 419, 420, 422, 423, 424, 425, 428, 439, 444, 445, 446, 447, 451, 458, 459, 460, 461, 467, 468, 469, 470, 472, 473, 480, 481, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 509, 510, 511, 512, 513, 514, 515, 517, 518, 519, 520, 523, 524, 527, 528, 531, 532, 535, 536, 537, 546, 547, 548, 549, 550, 551, 552, 558, 559, 560, 561, 562, 565, 566, 567, 568, 574, 577, 578, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 602, 608, 609, 610, 611, 613, 614, 615, 616, 619, 620, 621, 622, 623, 624, 626, 627, 628, 629, 634, 635, 636, 637, 638, 639, 640, 642, 643, 644, 645, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 666, 667, 668, 669, 670, 671, 672, 673, 676, 680, 681, 682, 683, 684, 688, 689, 690, 691, 692, 693, 694, 695, 696, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 714, 715, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 728, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 746, 747, 748, 749, 750, 752, 753, 754, 757, 764, 765, 766, 767, 768, 769, 773, 774, 777, 778, 779, 780, 782, 784, 785, 787, 788, 790, 791, 805, 808, 809, 810, 811, 812, 813, 819, 821, 824, 833, 834, 835, 836, 837, 838, 848, 849, 850, 852, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 871, 875, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 898, 899, 900, 901, 902, 903, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 921, 926, 927, 928, 929, 930, 931, 932, 933, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 963, 964, 965, 966, 985, 989, 996, 999, 1002, 1003, 1013, 1014, 1017, 1021, 1022, 1030, 1043, 1051, 1053, 1054, 1055, 1061, 1062, 1063, 1064, 1066, 1072, 1083, 1084, 1090, 1091, 1092, 1093, 1112, 1113, 1114, 1117, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1135, 1136, 1137, 1139, 1140, 1150, 1157, 1164, 1175, 1176, 1182, 1188, 1189, 1190, 1195, 1197, 1198, 1199, 1200, 1205, 1206, 1207, 1214, 1215, 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1229, 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1246, 1252, 1253, 1254, 1255, 1258, 1259, 1262, 1263, 1266, 1272, 1273, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1320, 1321, 1322, 1323, 1324, 1325, 1328, 1329, 1330, 1331, 1334, 1342, 1343, 1344, 1345, 1346, 1352, 1353, 1357, 1358, 1359, 1360, 1366, 1367, 1368, 1369, 1377, 1388, 1403, 1412, 1413, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1429, 1431, 1432, 1433, 1439, 1440, 1441, 1442, 1449, 1450, 1451, 1459, 1460, 1461, 1462, 1465, 1470, 1471, 1472, 1478, 1479, 1480, 1487, 1488, 1489, 1497, 1499, 1502, 1503, 1504, 1505, 1506, 1507, 1509, 1510, 1512, 1517, 1518, 1522, 1523, 1524, 1525, 1526, 1531, 1532, 1538, 1539, 1546, 1547, 1548, 1558, 1560, 1561, 1562, 1563, 1571, 1574, 1580, 1581, 1582, 1583, 1584, 1585, 1596, 1597, 1598, 1601, 1608, 1609, 1610, 1615, 1620, 1622, 1625, 1626, 1629, 1630, 1631, 1634, 1635, 1638, 1639, 1640, 1648, 1649, 1650, 1665, 1666, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1706, 1708, 1709, 1711, 1717, 1718, 1719, 1720, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1735, 1736, 1737, 1738, 1745, 1753, 1754, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1788, 1789, 1792, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1816, 1821, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1836, 1837, 1840, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1878, 1879, 1880, 1881, 1885, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1897, 1898, 1899, 1902, 1903, 1904, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1916, 1917, 1918, 1919, 1920, 1921, 1924, 1930, 1935, 1936, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1949, 1950, 1951, 1952, 1953, 1954, 1958, 1959, 1960, 1961, 1964, 1968, 1969, 1970, 1971, 1976, 1977, 1978, 1979, 1982, 1986, 1990, 1991, 1995, 1996, 1998, 2007, 2008, 2011, 2012, 2020, 2021, 2022, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2040, 2041, 2042, 2046, 2050, 2054, 2055, 2059, 2063, 2066, 2075, 2076, 2077, 2080, 2083, 2084, 2085, 2086, 2087, 2088, 2092, 2096, 2097, 2098, 2099, 2100, 2101, 2107, 2108, 2109, 2110, 2111, 2113, 2114, 2115, 2116, 2130, 2131, 2132, 2133, 2134, 2139, 2140, 2145, 2150, 2153, 2163, 2164, 2165, 2166, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2189, 2192, 2195, 2196, 2197, 2198, 2199, 2200, 2203, 2217, 2223, 2224, 2230, 2236, 2237, 2238, 2249, 2259, 2260, 2261, 2267, 2271, 2277, 2278, 2279, 2280, 2281, 2283, 2284, 2285, 2286, 2292, 2297, 2298, 2299, 2300, 2301, 2302, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2320, 2328, 2345, 2346, 2347, 2348, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2389, 2392, 2401, 2410, 2411, 2412, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2430, 2432, 2447, 2457, 2458, 2459, 2460, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2519, 2520, 2521, 2522, 2527, 2529, 2530, 2531, 2532, 2534, 2535, 2543, 2544, 2545, 2546, 2547, 2554, 2555, 2556, 2557, 2560, 2561, 2570, 2582, 2583, 2589, 2592, 2597, 2598, 2599, 2600, 2601, 2607, 2608, 2609, 2620, 2629, 2630, 2631, 2637, 2641, 2642, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2658, 2659, 2660, 2661, 2667, 2672, 2673, 2674, 2675, 2676, 2677, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2695], "summary": {"covered_lines": 1288, "num_statements": 1327, "percent_covered": 95.27212754260583, "percent_covered_display": "95", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 97.06103993971364, "percent_statements_covered_display": "97", "num_branches": 492, "num_partial_branches": 43, "covered_branches": 445, "missing_branches": 47, "percent_branches_covered": 90.44715447154472, "percent_branches_covered_display": "90"}, "missing_lines": [362, 418, 426, 507, 508, 708, 716, 781, 789, 851, 872, 990, 991, 992, 993, 1052, 1065, 1127, 1196, 1217, 1241, 1274, 1326, 1430, 1511, 1559, 1621, 1705, 1937, 1938, 1997, 2112, 2135, 2431, 2533, 2536, 2537, 2538, 2590], "excluded_lines": [], "executed_branches": [[110, 111], [110, 119], [114, 115], [114, 116], [116, 117], [116, 119], [119, 120], [119, 137], [121, 122], [121, 123], [123, 124], [123, 125], [125, 126], [125, 127], [129, 130], [129, 131], [131, 132], [131, 133], [133, 134], [133, 135], [139, 140], [139, 141], [141, 142], [141, 143], [143, 144], [143, 145], [145, 146], [145, 147], [147, -106], [147, 148], [156, 157], [156, 159], [186, 187], [186, 197], [188, 189], [188, 192], [190, 188], [190, 191], [192, 193], [192, 196], [194, 192], [194, 195], [210, -207], [210, 211], [214, 215], [214, 216], [250, -248], [250, 251], [251, 252], [251, 253], [254, 255], [254, 256], [256, 250], [256, 257], [257, 258], [257, 259], [263, 264], [263, 265], [265, 266], [265, 267], [267, 268], [267, 269], [293, 294], [293, 295], [299, 300], [299, 301], [305, 306], [312, 313], [333, 334], [333, 335], [335, 336], [335, 337], [337, 338], [337, 339], [341, 342], [341, 346], [347, -326], [347, 348], [352, 347], [352, 353], [356, 357], [356, 358], [361, 363], [363, 364], [363, 371], [379, 380], [400, 401], [400, 413], [413, 414], [413, 415], [417, 419], [419, -392], [419, 420], [423, 424], [423, 425], [425, -422], [446, 447], [446, 459], [459, 460], [459, 461], [469, -467], [469, 470], [498, 499], [498, 509], [500, 501], [500, 502], [505, 506], [517, 518], [519, 520], [536, 537], [536, 546], [546, 547], [546, 548], [548, 549], [548, 559], [550, 551], [550, 558], [559, 560], [559, 562], [567, 568], [567, 574], [588, 589], [588, 590], [608, 609], [608, 613], [613, 614], [627, 628], [627, 629], [634, 635], [634, 636], [637, 638], [637, 639], [652, 653], [652, 663], [654, 655], [654, 658], [656, 657], [658, 659], [658, 662], [660, 661], [667, 668], [667, 669], [669, 670], [669, 671], [671, 672], [671, 673], [683, 684], [683, 688], [688, 689], [688, 718], [705, 706], [705, 712], [707, 709], [715, 717], [720, 721], [720, 726], [741, 742], [741, 746], [746, 747], [746, 752], [765, 766], [765, 805], [768, 769], [768, 773], [773, 774], [773, 777], [777, 778], [777, 787], [780, 782], [788, 790], [809, 810], [809, 811], [833, 834], [833, 835], [850, 852], [885, 886], [893, 894], [893, 914], [895, 896], [895, 898], [899, 900], [899, 906], [903, 904], [939, 940], [939, 985], [942, 943], [942, 965], [945, 946], [945, 963], [989, 996], [1021, 1022], [1021, 1030], [1051, 1053], [1062, 1063], [1062, 1072], [1064, 1066], [1121, 1122], [1121, 1123], [1123, 1124], [1123, 1130], [1126, 1129], [1188, 1189], [1188, 1190], [1195, 1197], [1199, 1200], [1199, 1219], [1216, 1218], [1240, 1242], [1253, 1254], [1253, 1255], [1273, 1275], [1277, 1278], [1277, 1279], [1285, 1286], [1285, 1287], [1287, 1298], [1287, 1299], [1302, 1303], [1302, 1317], [1304, 1305], [1304, 1306], [1308, 1309], [1308, 1311], [1312, 1313], [1312, 1314], [1314, 1315], [1314, 1316], [1321, 1322], [1321, 1323], [1323, 1324], [1323, 1325], [1325, 1328], [1329, 1330], [1329, 1331], [1344, 1345], [1344, 1366], [1429, 1431], [1431, 1432], [1431, 1441], [1459, 1460], [1459, 1461], [1487, 1488], [1487, 1499], [1489, 1487], [1489, 1497], [1505, 1506], [1505, 1507], [1509, 1510], [1509, 1571], [1510, 1512], [1517, 1518], [1517, 1563], [1558, 1560], [1560, 1561], [1581, 1582], [1581, 1583], [1597, -1574], [1597, 1598], [1620, 1622], [1640, 1648], [1640, 1649], [1666, 1670], [1666, 1671], [1673, 1674], [1673, 1678], [1674, 1675], [1674, 1676], [1681, 1682], [1681, 1728], [1682, 1683], [1682, 1684], [1685, 1686], [1685, 1687], [1693, 1694], [1693, 1695], [1695, 1696], [1695, 1697], [1699, 1700], [1699, 1701], [1701, 1702], [1701, 1711], [1704, 1706], [1717, 1718], [1717, 1719], [1719, 1720], [1719, 1722], [1723, 1724], [1723, 1725], [1725, 1726], [1725, 1727], [1728, 1729], [1728, 1730], [1730, 1731], [1730, 1732], [1735, 1736], [1735, 1737], [1737, 1738], [1737, 1745], [1781, 1782], [1781, 1789], [1783, 1784], [1783, 1785], [1785, 1786], [1785, 1788], [1802, 1803], [1802, 1804], [1811, 1812], [1811, 1816], [1816, 1821], [1816, 1825], [1825, 1826], [1825, 1837], [1829, 1830], [1829, 1837], [1831, 1832], [1831, 1836], [1853, 1854], [1853, 1869], [1855, 1856], [1855, 1857], [1869, 1870], [1869, 1885], [1870, 1871], [1870, 1872], [1872, 1873], [1872, 1879], [1873, 1874], [1873, 1878], [1880, 1869], [1880, 1881], [1903, -1902], [1903, 1904], [1908, 1909], [1908, 1910], [1911, 1912], [1911, 1913], [1919, 1920], [1919, 1921], [1940, 1941], [1940, 1942], [1945, 1946], [1945, 1949], [1949, 1950], [1949, 1952], [1950, 1949], [1950, 1951], [1952, 1953], [1952, 1958], [1959, 1960], [1959, 1961], [1971, 1976], [1971, 1982], [1996, 1998], [2020, 2021], [2020, 2022], [2087, 2088], [2087, 2096], [2101, 2107], [2101, 2108], [2111, 2113], [2132, 2133], [2132, 2140], [2134, 2139], [2164, 2165], [2164, 2176], [2174, 2175], [2174, 2176], [2178, 2179], [2178, 2189], [2196, -2192], [2196, 2197], [2197, 2198], [2197, 2199], [2199, 2196], [2199, 2200], [2236, 2237], [2236, 2238], [2280, 2281], [2280, 2292], [2284, 2285], [2284, 2286], [2312, 2313], [2359, 2360], [2359, 2361], [2361, 2362], [2361, 2363], [2363, 2364], [2363, 2367], [2364, 2365], [2364, 2366], [2381, 2382], [2381, 2414], [2383, 2384], [2383, 2392], [2411, 2381], [2411, 2412], [2415, 2416], [2415, 2423], [2416, 2417], [2416, 2420], [2417, 2418], [2417, 2419], [2421, 2415], [2421, 2422], [2423, 2424], [2423, 2430], [2430, 2432], [2471, 2472], [2471, 2473], [2473, 2474], [2473, 2475], [2475, 2476], [2475, 2479], [2476, 2477], [2476, 2478], [2494, 2495], [2494, 2527], [2498, 2499], [2498, 2501], [2513, 2514], [2513, 2519], [2520, 2494], [2520, 2521], [2529, 2530], [2529, 2543], [2530, 2531], [2530, 2534], [2531, 2532], [2534, 2535], [2544, 2545], [2544, 2546], [2546, 2547], [2546, 2554], [2560, 2561], [2560, 2570], [2582, 2583], [2582, 2589], [2589, 2592], [2607, 2608], [2607, 2609], [2655, 2656], [2655, 2667], [2659, 2660], [2659, 2661], [2687, 2688]], "missing_branches": [[305, 311], [312, 320], [361, 362], [379, -376], [417, 418], [425, 426], [505, 498], [517, 519], [519, -494], [613, 615], [656, 654], [660, 658], [707, 708], [715, 716], [780, 781], [788, 789], [850, 851], [885, 887], [903, 905], [989, 990], [991, 992], [991, 993], [1051, 1052], [1064, 1065], [1126, 1127], [1195, 1196], [1216, 1217], [1240, 1241], [1273, 1274], [1325, 1326], [1429, 1430], [1510, 1511], [1558, 1559], [1560, 1562], [1620, 1621], [1704, 1705], [1996, 1997], [2111, 2112], [2134, 2135], [2312, 2314], [2430, 2431], [2531, 2533], [2534, 2536], [2537, 2529], [2537, 2538], [2589, 2590], [2687, 2689]], "functions": {"_native_validator": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_validate_l2_semantics": {"executed_lines": [107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 30, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [[110, 111], [110, 119], [114, 115], [114, 116], [116, 117], [116, 119], [119, 120], [119, 137], [121, 122], [121, 123], [123, 124], [123, 125], [125, 126], [125, 127], [129, 130], [129, 131], [131, 132], [131, 133], [133, 134], [133, 135], [139, 140], [139, 141], [141, 142], [141, 143], [143, 144], [143, 145], [145, 146], [145, 147], [147, -106], [147, 148]], "missing_branches": []}, "_validate_event_record": {"executed_lines": [152, 153, 154, 155, 156, 157, 159], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[156, 157], [156, 159]], "missing_branches": []}, "_cached_timestamp": {"executed_lines": [164], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "_cached_date": {"executed_lines": [169], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168, "executed_branches": [], "missing_branches": []}, "_cached_utc_text": {"executed_lines": [174], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173, "executed_branches": [], "missing_branches": []}, "_cached_date_text": {"executed_lines": [179], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [], "missing_branches": []}, "_arrow_ready_rows": {"executed_lines": [183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [[186, 187], [186, 197], [188, 189], [188, 192], [190, 188], [190, 191], [192, 193], [192, 196], [194, 192], [194, 195]], "missing_branches": []}, "_InputSpool.__init__": {"executed_lines": [202, 203, 204, 205], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [], "missing_branches": []}, "_InputSpool.append": {"executed_lines": [208, 209, 210, 211], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [[210, -207], [210, 211]], "missing_branches": []}, "_InputSpool.flush": {"executed_lines": [214, 215, 216, 217, 225, 226, 230, 231, 232, 233], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [[214, 215], [214, 216]], "missing_branches": []}, "_InputSpool.close": {"executed_lines": [236, 237, 238, 239], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235, "executed_branches": [], "missing_branches": []}, "_InputSpool.__enter__": {"executed_lines": [242], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "_InputSpool.__exit__": {"executed_lines": [245], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "_iter_spooled_records": {"executed_lines": [249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248, "executed_branches": [[250, -248], [250, 251], [251, 252], [251, 253], [254, 255], [254, 256], [256, 250], [256, 257], [257, 258], [257, 259]], "missing_branches": []}, "_has_non_finite": {"executed_lines": [263, 264, 265, 266, 267, 268, 269], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [[263, 264], [263, 265], [265, 266], [265, 267], [267, 268], [267, 269]], "missing_branches": []}, "_OpenPartition.append": {"executed_lines": [288, 293, 294, 295, 296], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287, "executed_branches": [[293, 294], [293, 295]], "missing_branches": []}, "_OpenPartition.flush": {"executed_lines": [299, 300, 301, 302, 303, 304, 305, 306, 311, 312, 313, 314, 320, 321, 322, 323, 324], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 298, "executed_branches": [[299, 300], [299, 301], [305, 306], [312, 313]], "missing_branches": [[305, 311], [312, 320]]}, "_OpenPartition.append_record_batch": {"executed_lines": [333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 346, 347, 348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [[333, 334], [333, 335], [335, 336], [335, 337], [337, 338], [337, 339], [341, 342], [341, 346], [347, -326], [347, 348], [352, 347], [352, 353]], "missing_branches": []}, "_OpenPartition._flush_arrow_buffer": {"executed_lines": [356, 357, 358, 359, 360, 361, 363, 364, 365, 371, 372, 373, 374], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [362], "excluded_lines": [], "start_line": 355, "executed_branches": [[356, 357], [356, 358], [361, 363], [363, 364], [363, 371]], "missing_branches": [[361, 362]]}, "_OpenPartition.close": {"executed_lines": [377, 378, 379, 380, 381], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[379, 380]], "missing_branches": [[379, -376]]}, "_PartitionSet.__init__": {"executed_lines": [386, 387, 388, 389, 390], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 385, "executed_branches": [], "missing_branches": []}, "_PartitionSet.append": {"executed_lines": [393, 398, 399, 400, 401, 405, 412, 413, 414, 415, 416, 417, 419, 420], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [418], "excluded_lines": [], "start_line": 392, "executed_branches": [[400, 401], [400, 413], [413, 414], [413, 415], [417, 419], [419, -392], [419, 420]], "missing_branches": [[417, 418]]}, "_PartitionSet.flush_all": {"executed_lines": [423, 424, 425], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [426], "excluded_lines": [], "start_line": 422, "executed_branches": [[423, 424], [423, 425], [425, -422]], "missing_branches": [[425, 426]]}, "_PartitionSet.append_record_batch": {"executed_lines": [439, 444, 445, 446, 447, 451, 458, 459, 460, 461], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428, "executed_branches": [[446, 447], [446, 459], [459, 460], [459, 461]], "missing_branches": []}, "_PartitionSet.close": {"executed_lines": [468, 469, 470], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[469, -467], [469, 470]], "missing_branches": []}, "_PartitionSet.paths": {"executed_lines": [473], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 472, "executed_branches": [], "missing_branches": []}, "_partition_identity": {"executed_lines": [486], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481, "executed_branches": [], "missing_branches": []}, "_streaming_stage": {"executed_lines": [496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 509, 510, 511, 512, 513, 514, 515, 517, 518, 519, 520], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.29411764705883, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [507, 508], "excluded_lines": [], "start_line": 495, "executed_branches": [[498, 499], [498, 509], [500, 501], [500, 502], [505, 506], [517, 518], [519, 520]], "missing_branches": [[505, 498], [517, 519], [519, -494]]}, "_sql_text": {"executed_lines": [524], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523, "executed_branches": [], "missing_branches": []}, "_sql_path_list": {"executed_lines": [528], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 527, "executed_branches": [], "missing_branches": []}, "_sql_identifier": {"executed_lines": [532], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 531, "executed_branches": [], "missing_branches": []}, "_canonical_sql_value": {"executed_lines": [536, 537, 546, 547, 548, 549, 550, 551, 552, 558, 559, 560, 561, 562], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 546], [546, 547], [546, 548], [548, 549], [548, 559], [550, 551], [550, 558], [559, 560], [559, 562]], "missing_branches": []}, "_canonical_row_sql": {"executed_lines": [566, 567, 568, 574], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 565, "executed_branches": [[567, 568], [567, 574]], "missing_branches": []}, "_canonical_event_sql": {"executed_lines": [578], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 577, "executed_branches": [], "missing_branches": []}, "_sort_partition": {"executed_lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 602, 608, 609, 610, 611, 613, 614, 615, 616], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 587, "executed_branches": [[588, 589], [588, 590], [608, 609], [608, 613], [613, 614]], "missing_branches": [[613, 615]]}, "_JsonArrayDigest.__init__": {"executed_lines": [621, 622, 623, 624], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [], "missing_branches": []}, "_JsonArrayDigest.update": {"executed_lines": [627, 628, 629, 634, 635, 636, 637, 638, 639, 640], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[627, 628], [627, 629], [634, 635], [634, 636], [637, 638], [637, 639]], "missing_branches": []}, "_JsonArrayDigest.hexdigest": {"executed_lines": [643, 644, 645], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 642, "executed_branches": [], "missing_branches": []}, "_logical_rows": {"executed_lines": [649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 648, "executed_branches": [[652, 653], [652, 663], [654, 655], [654, 658], [656, 657], [658, 659], [658, 662], [660, 661]], "missing_branches": [[656, 654], [660, 658]]}, "_contains_floating_type": {"executed_lines": [667, 668, 669, 670, 671, 672, 673], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 666, "executed_branches": [[667, 668], [667, 669], [669, 670], [669, 671], [671, 672], [671, 673]], "missing_branches": []}, "_scan_partition": {"executed_lines": [680, 681, 682, 683, 684, 688, 689, 690, 691, 692, 693, 694, 695, 696, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 714, 715, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 728], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "95", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [708, 716], "excluded_lines": [], "start_line": 676, "executed_branches": [[683, 684], [683, 688], [688, 689], [688, 718], [705, 706], [705, 712], [707, 709], [715, 717], [720, 721], [720, 726]], "missing_branches": [[707, 708], [715, 716]]}, "_scan_partition_arrow_ipc": {"executed_lines": [732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 746, 747, 748, 749, 750, 752, 753, 754], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 731, "executed_branches": [[741, 742], [741, 746], [746, 747], [746, 752]], "missing_branches": []}, "_partition_manifests": {"executed_lines": [764, 765, 766, 767, 768, 769, 773, 774, 777, 778, 779, 780, 782, 784, 785, 787, 788, 790, 791, 805], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [781, 789], "excluded_lines": [], "start_line": 757, "executed_branches": [[765, 766], [765, 805], [768, 769], [768, 773], [773, 774], [773, 777], [777, 778], [777, 787], [780, 782], [788, 790]], "missing_branches": [[780, 781], [788, 789]]}, "_duplicate_event_ids": {"executed_lines": [809, 810, 811, 812, 813, 819, 821], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 808, "executed_branches": [[809, 810], [809, 811]], "missing_branches": []}, "_publish_quarantine_file": {"executed_lines": [833, 834, 835, 836, 837, 838, 848, 849, 850, 852, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 871], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [851, 872], "excluded_lines": [], "start_line": 824, "executed_branches": [[833, 834], [833, 835], [850, 852]], "missing_branches": [[850, 851]]}, "_rebuild_after_exclusions": {"executed_lines": [885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 898, 899, 900, 901, 902, 903, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 875, "executed_branches": [[885, 886], [893, 894], [893, 914], [895, 896], [895, 898], [899, 900], [899, 906], [903, 904]], "missing_branches": [[885, 887], [903, 905]]}, "_claim_database": {"executed_lines": [926, 927, 928, 929, 930, 931, 932, 933, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 963, 964, 965, 966, 985, 989, 996], "summary": {"covered_lines": 25, "num_statements": 29, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.20689655172414, "percent_statements_covered_display": "86", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [990, 991, 992, 993], "excluded_lines": [], "start_line": 921, "executed_branches": [[939, 940], [939, 985], [942, 943], [942, 965], [945, 946], [945, 963], [989, 996]], "missing_branches": [[989, 990], [991, 992], [991, 993]]}, "_claim_shard_manifests": {"executed_lines": [1002, 1003], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 999, "executed_branches": [], "missing_branches": []}, "_claim_multiset_manifest_sql": {"executed_lines": [1014, 1017, 1021, 1022, 1030], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1013, "executed_branches": [[1021, 1022], [1021, 1030]], "missing_branches": []}, "_export_claim_index": {"executed_lines": [1051, 1053, 1054, 1055, 1061, 1062, 1063, 1064, 1066, 1072, 1083, 1084], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1052, 1065], "excluded_lines": [], "start_line": 1043, "executed_branches": [[1051, 1053], [1062, 1063], [1062, 1072], [1064, 1066]], "missing_branches": [[1051, 1052], [1064, 1065]]}, "_claim_select_sql": {"executed_lines": [1091, 1092, 1093], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1090, "executed_branches": [], "missing_branches": []}, "_claim_file_order": {"executed_lines": [1113, 1114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1112, "executed_branches": [], "missing_branches": []}, "_claim_shard_manifests_from_paths": {"executed_lines": [1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1135, 1136, 1137, 1139, 1140], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1127], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1121, 1122], [1121, 1123], [1123, 1124], [1123, 1130], [1126, 1129]], "missing_branches": [[1126, 1127]]}, "_write_claim_index_manifest": {"executed_lines": [1157, 1164, 1175, 1176], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1150, "executed_branches": [], "missing_branches": []}, "_build_claim_index_files": {"executed_lines": [1188, 1189, 1190, 1195, 1197, 1198, 1199, 1200, 1205, 1206, 1207, 1214, 1215, 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1229, 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1246, 1252, 1253, 1254, 1255], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1196, 1217, 1241], "excluded_lines": [], "start_line": 1182, "executed_branches": [[1188, 1189], [1188, 1190], [1195, 1197], [1199, 1200], [1199, 1219], [1216, 1218], [1240, 1242], [1253, 1254], [1253, 1255]], "missing_branches": [[1195, 1196], [1216, 1217], [1240, 1241]]}, "_claim_index_root": {"executed_lines": [1259], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1258, "executed_branches": [], "missing_branches": []}, "_claim_index_files": {"executed_lines": [1263], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1262, "executed_branches": [], "missing_branches": []}, "_validate_claim_index": {"executed_lines": [1272, 1273, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1320, 1321, 1322, 1323, 1324, 1325, 1328, 1329, 1330, 1331], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 94.52054794520548, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [1274, 1326], "excluded_lines": [], "start_line": 1266, "executed_branches": [[1273, 1275], [1277, 1278], [1277, 1279], [1285, 1286], [1285, 1287], [1287, 1298], [1287, 1299], [1302, 1303], [1302, 1317], [1304, 1305], [1304, 1306], [1308, 1309], [1308, 1311], [1312, 1313], [1312, 1314], [1314, 1315], [1314, 1316], [1321, 1322], [1321, 1323], [1323, 1324], [1323, 1325], [1325, 1328], [1329, 1330], [1329, 1331]], "missing_branches": [[1273, 1274], [1325, 1326]]}, "_publish_or_validate_claim_index": {"executed_lines": [1342, 1343, 1344, 1345, 1346, 1352, 1353, 1357, 1358, 1359, 1360, 1366, 1367, 1368, 1369], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1334, "executed_branches": [[1344, 1345], [1344, 1366]], "missing_branches": []}, "_snapshot_payload_v3": {"executed_lines": [1388], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1377, "executed_branches": [], "missing_branches": []}, "_index_for_snapshot": {"executed_lines": [1412, 1413, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1429, 1431, 1432, 1433, 1439, 1440, 1441, 1442, 1449, 1450, 1451, 1459, 1460, 1461, 1462], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1430], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1429, 1431], [1431, 1432], [1431, 1441], [1459, 1460], [1459, 1461]], "missing_branches": [[1429, 1430]]}, "iter_event_claims_v3": {"executed_lines": [1470, 1471, 1472, 1478, 1479, 1480, 1487, 1488, 1489, 1497, 1499], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1465, "executed_branches": [[1487, 1488], [1487, 1499], [1489, 1487], [1489, 1497]], "missing_branches": []}, "_historical_index_paths": {"executed_lines": [1503, 1504, 1505, 1506, 1507, 1509, 1510, 1512, 1517, 1518, 1522, 1523, 1524, 1525, 1526, 1531, 1532, 1538, 1539, 1546, 1547, 1548, 1558, 1560, 1561, 1562, 1563, 1571], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1511, 1559], "excluded_lines": [], "start_line": 1502, "executed_branches": [[1505, 1506], [1505, 1507], [1509, 1510], [1509, 1571], [1510, 1512], [1517, 1518], [1517, 1563], [1558, 1560], [1560, 1561]], "missing_branches": [[1510, 1511], [1558, 1559], [1560, 1562]]}, "_assert_lake_wide_claims": {"executed_lines": [1580, 1581, 1582, 1583, 1584, 1585, 1596, 1597, 1598], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1574, "executed_branches": [[1581, 1582], [1581, 1583], [1597, -1574], [1597, 1598]], "missing_branches": []}, "load_normalized_snapshot_v3": {"executed_lines": [1608, 1609, 1610, 1615, 1620, 1622, 1625, 1626, 1629, 1630, 1631, 1634, 1635, 1638, 1639, 1640, 1648, 1649, 1650, 1665, 1666, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1706, 1708, 1709, 1711, 1717, 1718, 1719, 1720, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1735, 1736, 1737, 1738, 1745, 1753, 1754], "summary": {"covered_lines": 76, "num_statements": 78, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97", "num_branches": 42, "num_partial_branches": 2, "covered_branches": 40, "missing_branches": 2, "percent_branches_covered": 95.23809523809524, "percent_branches_covered_display": "95"}, "missing_lines": [1621, 1705], "excluded_lines": [], "start_line": 1601, "executed_branches": [[1620, 1622], [1640, 1648], [1640, 1649], [1666, 1670], [1666, 1671], [1673, 1674], [1673, 1678], [1674, 1675], [1674, 1676], [1681, 1682], [1681, 1728], [1682, 1683], [1682, 1684], [1685, 1686], [1685, 1687], [1693, 1694], [1693, 1695], [1695, 1696], [1695, 1697], [1699, 1700], [1699, 1701], [1701, 1702], [1701, 1711], [1704, 1706], [1717, 1718], [1717, 1719], [1719, 1720], [1719, 1722], [1723, 1724], [1723, 1725], [1725, 1726], [1725, 1727], [1728, 1729], [1728, 1730], [1730, 1731], [1730, 1732], [1735, 1736], [1735, 1737], [1737, 1738], [1737, 1745]], "missing_branches": [[1620, 1621], [1704, 1705]]}, "_all_duplicate_ids_from_spool": {"executed_lines": [1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1788, 1789], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1778, "executed_branches": [[1781, 1782], [1781, 1789], [1783, 1784], [1783, 1785], [1785, 1786], [1785, 1788]], "missing_branches": []}, "_validate_stream_record": {"executed_lines": [1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1816, 1821, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1836, 1837], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1792, "executed_branches": [[1802, 1803], [1802, 1804], [1811, 1812], [1811, 1816], [1816, 1821], [1816, 1825], [1825, 1826], [1825, 1837], [1829, 1830], [1829, 1837], [1831, 1832], [1831, 1836]], "missing_branches": []}, "_revalidate_streams_after_duplicate_exclusions": {"executed_lines": [1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1878, 1879, 1880, 1881, 1885], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1840, "executed_branches": [[1853, 1854], [1853, 1869], [1855, 1856], [1855, 1857], [1869, 1870], [1869, 1885], [1870, 1871], [1870, 1872], [1872, 1873], [1872, 1879], [1873, 1874], [1873, 1878], [1880, 1869], [1880, 1881]], "missing_branches": []}, "_all_true": {"executed_lines": [1898, 1899], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1897, "executed_branches": [], "missing_branches": []}, "_require_all": {"executed_lines": [1903, 1904], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1902, "executed_branches": [[1903, -1902], [1903, 1904]], "missing_branches": []}, "_uniform_value": {"executed_lines": [1908, 1909, 1910, 1911, 1912, 1913], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1907, "executed_branches": [[1908, 1909], [1908, 1910], [1911, 1912], [1911, 1913]], "missing_branches": []}, "_validate_fixed_point_array": {"executed_lines": [1917, 1918, 1919, 1920, 1921, 1924], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1916, "executed_branches": [[1919, 1920], [1919, 1921]], "missing_branches": []}, "_validate_common_arrow_batch": {"executed_lines": [1935, 1936, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1949, 1950, 1951, 1952, 1953, 1954, 1958, 1959, 1960, 1961, 1964, 1968, 1969, 1970, 1971, 1976, 1977, 1978, 1979, 1982, 1986, 1990, 1991, 1995, 1996, 1998], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [1937, 1938, 1997], "excluded_lines": [], "start_line": 1930, "executed_branches": [[1940, 1941], [1940, 1942], [1945, 1946], [1945, 1949], [1949, 1950], [1949, 1952], [1950, 1949], [1950, 1951], [1952, 1953], [1952, 1958], [1959, 1960], [1959, 1961], [1971, 1976], [1971, 1982], [1996, 1998]], "missing_branches": [[1996, 1997]]}, "_logical_batch_rows": {"executed_lines": [2008], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2007, "executed_branches": [], "missing_branches": []}, "_sort_keys": {"executed_lines": [2012, 2020, 2021, 2022], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2011, "executed_branches": [[2020, 2021], [2020, 2022]], "missing_branches": []}, "_validate_l2_delta_columns": {"executed_lines": [2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2040, 2041, 2042, 2046, 2050, 2054, 2055, 2059, 2063], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2025, "executed_branches": [], "missing_branches": []}, "_try_apply_uniform_l2_delta_batch": {"executed_lines": [2075, 2076, 2077, 2080, 2083, 2084, 2085, 2086, 2087, 2088, 2092, 2096, 2097, 2098, 2099, 2100, 2101, 2107, 2108, 2109, 2110, 2111, 2113, 2114, 2115, 2116, 2130, 2131, 2132, 2133, 2134, 2139, 2140, 2145, 2150], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [2112, 2135], "excluded_lines": [], "start_line": 2066, "executed_branches": [[2087, 2088], [2087, 2096], [2101, 2107], [2101, 2108], [2111, 2113], [2132, 2133], [2132, 2140], [2134, 2139]], "missing_branches": [[2111, 2112], [2134, 2135]]}, "_validate_record_batch": {"executed_lines": [2163, 2164, 2165, 2166, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2189], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2153, "executed_branches": [[2164, 2165], [2164, 2176], [2174, 2175], [2174, 2176], [2178, 2179], [2178, 2189]], "missing_branches": []}, "_iter_record_batches": {"executed_lines": [2195, 2196, 2197, 2198, 2199, 2200], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2192, "executed_branches": [[2196, -2192], [2196, 2197], [2197, 2198], [2197, 2199], [2199, 2196], [2199, 2200]], "missing_branches": []}, "_finalize_strict_batch_snapshot": {"executed_lines": [2217, 2223, 2224, 2230, 2236, 2237, 2238, 2249, 2259, 2260, 2261, 2267, 2271, 2277, 2278, 2279, 2280, 2281, 2283, 2284, 2285, 2286, 2292, 2297, 2298, 2299, 2300, 2301, 2302, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2320], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 97.77777777777777, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 2203, "executed_branches": [[2236, 2237], [2236, 2238], [2280, 2281], [2280, 2292], [2284, 2285], [2284, 2286], [2312, 2313]], "missing_branches": [[2312, 2314]]}, "write_normalized_batches_v3": {"executed_lines": [2345, 2346, 2347, 2348, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2389, 2392, 2401, 2410, 2411, 2412, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2430, 2432], "summary": {"covered_lines": 48, "num_statements": 49, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.95918367346938, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [2431], "excluded_lines": [], "start_line": 2328, "executed_branches": [[2359, 2360], [2359, 2361], [2361, 2362], [2361, 2363], [2363, 2364], [2363, 2367], [2364, 2365], [2364, 2366], [2381, 2382], [2381, 2414], [2383, 2384], [2383, 2392], [2411, 2381], [2411, 2412], [2415, 2416], [2415, 2423], [2416, 2417], [2416, 2420], [2417, 2418], [2417, 2419], [2421, 2415], [2421, 2422], [2423, 2424], [2423, 2430], [2430, 2432]], "missing_branches": [[2430, 2431]]}, "write_normalized_events_v3": {"executed_lines": [2457, 2458, 2459, 2460, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2519, 2520, 2521, 2522, 2527, 2529, 2530, 2531, 2532, 2534, 2535, 2543, 2544, 2545, 2546, 2547, 2554, 2555, 2556, 2557, 2560, 2561, 2570, 2582, 2583, 2589, 2592, 2597, 2598, 2599, 2600, 2601, 2607, 2608, 2609, 2620, 2629, 2630, 2631, 2637, 2641, 2642, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2658, 2659, 2660, 2661, 2667, 2672, 2673, 2674, 2675, 2676, 2677, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2695], "summary": {"covered_lines": 110, "num_statements": 115, "percent_covered": 93.08176100628931, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96", "num_branches": 44, "num_partial_branches": 4, "covered_branches": 38, "missing_branches": 6, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}, "missing_lines": [2533, 2536, 2537, 2538, 2590], "excluded_lines": [], "start_line": 2447, "executed_branches": [[2471, 2472], [2471, 2473], [2473, 2474], [2473, 2475], [2475, 2476], [2475, 2479], [2476, 2477], [2476, 2478], [2494, 2495], [2494, 2527], [2498, 2499], [2498, 2501], [2513, 2514], [2513, 2519], [2520, 2494], [2520, 2521], [2529, 2530], [2529, 2543], [2530, 2531], [2530, 2534], [2531, 2532], [2534, 2535], [2544, 2545], [2544, 2546], [2546, 2547], [2546, 2554], [2560, 2561], [2560, 2570], [2582, 2583], [2582, 2589], [2589, 2592], [2607, 2608], [2607, 2609], [2655, 2656], [2655, 2667], [2659, 2660], [2659, 2661], [2687, 2688]], "missing_branches": [[2531, 2533], [2534, 2536], [2537, 2529], [2537, 2538], [2589, 2590], [2687, 2689]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 60, 61, 62, 63, 73, 74, 75, 76, 77, 78, 79, 80, 81, 91, 94, 98, 99, 106, 151, 162, 163, 167, 168, 172, 173, 177, 178, 182, 200, 201, 207, 213, 235, 241, 244, 248, 262, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 287, 298, 326, 355, 376, 384, 385, 392, 422, 428, 467, 472, 480, 481, 494, 495, 523, 527, 531, 535, 565, 577, 587, 619, 620, 626, 642, 648, 666, 676, 731, 757, 808, 824, 875, 921, 999, 1013, 1043, 1090, 1112, 1117, 1150, 1182, 1258, 1262, 1266, 1334, 1377, 1403, 1465, 1502, 1574, 1601, 1778, 1792, 1840, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1897, 1902, 1907, 1916, 1930, 2007, 2011, 2025, 2066, 2153, 2192, 2203, 2328, 2447], "summary": {"covered_lines": 152, "num_statements": 152, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"_ClaimIndexMissingError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_InputSpool": {"executed_lines": [202, 203, 204, 205, 208, 209, 210, 211, 214, 215, 216, 217, 225, 226, 230, 231, 232, 233, 236, 237, 238, 239, 242, 245], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [[210, -207], [210, 211], [214, 215], [214, 216]], "missing_branches": []}, "_OpenPartition": {"executed_lines": [288, 293, 294, 295, 296, 299, 300, 301, 302, 303, 304, 305, 306, 311, 312, 313, 314, 320, 321, 322, 323, 324, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 346, 347, 348, 349, 350, 351, 352, 353, 356, 357, 358, 359, 360, 361, 363, 364, 365, 371, 372, 373, 374, 377, 378, 379, 380, 381], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 94.25287356321839, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [362], "excluded_lines": [], "start_line": 273, "executed_branches": [[293, 294], [293, 295], [299, 300], [299, 301], [305, 306], [312, 313], [333, 334], [333, 335], [335, 336], [335, 337], [337, 338], [337, 339], [341, 342], [341, 346], [347, -326], [347, 348], [352, 347], [352, 353], [356, 357], [356, 358], [361, 363], [363, 364], [363, 371], [379, 380]], "missing_branches": [[305, 311], [312, 320], [361, 362], [379, -376]]}, "_PartitionSet": {"executed_lines": [386, 387, 388, 389, 390, 393, 398, 399, 400, 401, 405, 412, 413, 414, 415, 416, 417, 419, 420, 423, 424, 425, 439, 444, 445, 446, 447, 451, 458, 459, 460, 461, 468, 469, 470, 473], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [418, 426], "excluded_lines": [], "start_line": 384, "executed_branches": [[400, 401], [400, 413], [413, 414], [413, 415], [417, 419], [419, -392], [419, 420], [423, 424], [423, 425], [425, -422], [446, 447], [446, 459], [459, 460], [459, 461], [469, -467], [469, 470]], "missing_branches": [[417, 418], [425, 426]]}, "_JsonArrayDigest": {"executed_lines": [621, 622, 623, 624, 627, 628, 629, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [[627, 628], [627, 629], [634, 635], [634, 636], [637, 638], [637, 639]], "missing_branches": []}, "_ArrowBatchIdentity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1889, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 60, 61, 62, 63, 73, 74, 75, 76, 77, 78, 79, 80, 81, 91, 94, 98, 99, 100, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 159, 162, 163, 164, 167, 168, 169, 172, 173, 174, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 207, 213, 235, 241, 244, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 287, 298, 326, 355, 376, 384, 385, 392, 422, 428, 467, 472, 480, 481, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 509, 510, 511, 512, 513, 514, 515, 517, 518, 519, 520, 523, 524, 527, 528, 531, 532, 535, 536, 537, 546, 547, 548, 549, 550, 551, 552, 558, 559, 560, 561, 562, 565, 566, 567, 568, 574, 577, 578, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 602, 608, 609, 610, 611, 613, 614, 615, 616, 619, 620, 626, 642, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 666, 667, 668, 669, 670, 671, 672, 673, 676, 680, 681, 682, 683, 684, 688, 689, 690, 691, 692, 693, 694, 695, 696, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 714, 715, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 728, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 746, 747, 748, 749, 750, 752, 753, 754, 757, 764, 765, 766, 767, 768, 769, 773, 774, 777, 778, 779, 780, 782, 784, 785, 787, 788, 790, 791, 805, 808, 809, 810, 811, 812, 813, 819, 821, 824, 833, 834, 835, 836, 837, 838, 848, 849, 850, 852, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 871, 875, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 898, 899, 900, 901, 902, 903, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 921, 926, 927, 928, 929, 930, 931, 932, 933, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 963, 964, 965, 966, 985, 989, 996, 999, 1002, 1003, 1013, 1014, 1017, 1021, 1022, 1030, 1043, 1051, 1053, 1054, 1055, 1061, 1062, 1063, 1064, 1066, 1072, 1083, 1084, 1090, 1091, 1092, 1093, 1112, 1113, 1114, 1117, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1135, 1136, 1137, 1139, 1140, 1150, 1157, 1164, 1175, 1176, 1182, 1188, 1189, 1190, 1195, 1197, 1198, 1199, 1200, 1205, 1206, 1207, 1214, 1215, 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1229, 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1246, 1252, 1253, 1254, 1255, 1258, 1259, 1262, 1263, 1266, 1272, 1273, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1320, 1321, 1322, 1323, 1324, 1325, 1328, 1329, 1330, 1331, 1334, 1342, 1343, 1344, 1345, 1346, 1352, 1353, 1357, 1358, 1359, 1360, 1366, 1367, 1368, 1369, 1377, 1388, 1403, 1412, 1413, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1429, 1431, 1432, 1433, 1439, 1440, 1441, 1442, 1449, 1450, 1451, 1459, 1460, 1461, 1462, 1465, 1470, 1471, 1472, 1478, 1479, 1480, 1487, 1488, 1489, 1497, 1499, 1502, 1503, 1504, 1505, 1506, 1507, 1509, 1510, 1512, 1517, 1518, 1522, 1523, 1524, 1525, 1526, 1531, 1532, 1538, 1539, 1546, 1547, 1548, 1558, 1560, 1561, 1562, 1563, 1571, 1574, 1580, 1581, 1582, 1583, 1584, 1585, 1596, 1597, 1598, 1601, 1608, 1609, 1610, 1615, 1620, 1622, 1625, 1626, 1629, 1630, 1631, 1634, 1635, 1638, 1639, 1640, 1648, 1649, 1650, 1665, 1666, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1706, 1708, 1709, 1711, 1717, 1718, 1719, 1720, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1735, 1736, 1737, 1738, 1745, 1753, 1754, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1788, 1789, 1792, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1816, 1821, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1836, 1837, 1840, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1878, 1879, 1880, 1881, 1885, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1897, 1898, 1899, 1902, 1903, 1904, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1916, 1917, 1918, 1919, 1920, 1921, 1924, 1930, 1935, 1936, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1949, 1950, 1951, 1952, 1953, 1954, 1958, 1959, 1960, 1961, 1964, 1968, 1969, 1970, 1971, 1976, 1977, 1978, 1979, 1982, 1986, 1990, 1991, 1995, 1996, 1998, 2007, 2008, 2011, 2012, 2020, 2021, 2022, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2040, 2041, 2042, 2046, 2050, 2054, 2055, 2059, 2063, 2066, 2075, 2076, 2077, 2080, 2083, 2084, 2085, 2086, 2087, 2088, 2092, 2096, 2097, 2098, 2099, 2100, 2101, 2107, 2108, 2109, 2110, 2111, 2113, 2114, 2115, 2116, 2130, 2131, 2132, 2133, 2134, 2139, 2140, 2145, 2150, 2153, 2163, 2164, 2165, 2166, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2189, 2192, 2195, 2196, 2197, 2198, 2199, 2200, 2203, 2217, 2223, 2224, 2230, 2236, 2237, 2238, 2249, 2259, 2260, 2261, 2267, 2271, 2277, 2278, 2279, 2280, 2281, 2283, 2284, 2285, 2286, 2292, 2297, 2298, 2299, 2300, 2301, 2302, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2320, 2328, 2345, 2346, 2347, 2348, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2389, 2392, 2401, 2410, 2411, 2412, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2430, 2432, 2447, 2457, 2458, 2459, 2460, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2519, 2520, 2521, 2522, 2527, 2529, 2530, 2531, 2532, 2534, 2535, 2543, 2544, 2545, 2546, 2547, 2554, 2555, 2556, 2557, 2560, 2561, 2570, 2582, 2583, 2589, 2592, 2597, 2598, 2599, 2600, 2601, 2607, 2608, 2609, 2620, 2629, 2630, 2631, 2637, 2641, 2642, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2658, 2659, 2660, 2661, 2667, 2672, 2673, 2674, 2675, 2676, 2677, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2695], "summary": {"covered_lines": 1153, "num_statements": 1189, "percent_covered": 95.26153846153846, "percent_covered_display": "95", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 96.97224558452481, "percent_statements_covered_display": "97", "num_branches": 436, "num_partial_branches": 37, "covered_branches": 395, "missing_branches": 41, "percent_branches_covered": 90.59633027522936, "percent_branches_covered_display": "91"}, "missing_lines": [507, 508, 708, 716, 781, 789, 851, 872, 990, 991, 992, 993, 1052, 1065, 1127, 1196, 1217, 1241, 1274, 1326, 1430, 1511, 1559, 1621, 1705, 1937, 1938, 1997, 2112, 2135, 2431, 2533, 2536, 2537, 2538, 2590], "excluded_lines": [], "start_line": 1, "executed_branches": [[110, 111], [110, 119], [114, 115], [114, 116], [116, 117], [116, 119], [119, 120], [119, 137], [121, 122], [121, 123], [123, 124], [123, 125], [125, 126], [125, 127], [129, 130], [129, 131], [131, 132], [131, 133], [133, 134], [133, 135], [139, 140], [139, 141], [141, 142], [141, 143], [143, 144], [143, 145], [145, 146], [145, 147], [147, -106], [147, 148], [156, 157], [156, 159], [186, 187], [186, 197], [188, 189], [188, 192], [190, 188], [190, 191], [192, 193], [192, 196], [194, 192], [194, 195], [250, -248], [250, 251], [251, 252], [251, 253], [254, 255], [254, 256], [256, 250], [256, 257], [257, 258], [257, 259], [263, 264], [263, 265], [265, 266], [265, 267], [267, 268], [267, 269], [498, 499], [498, 509], [500, 501], [500, 502], [505, 506], [517, 518], [519, 520], [536, 537], [536, 546], [546, 547], [546, 548], [548, 549], [548, 559], [550, 551], [550, 558], [559, 560], [559, 562], [567, 568], [567, 574], [588, 589], [588, 590], [608, 609], [608, 613], [613, 614], [652, 653], [652, 663], [654, 655], [654, 658], [656, 657], [658, 659], [658, 662], [660, 661], [667, 668], [667, 669], [669, 670], [669, 671], [671, 672], [671, 673], [683, 684], [683, 688], [688, 689], [688, 718], [705, 706], [705, 712], [707, 709], [715, 717], [720, 721], [720, 726], [741, 742], [741, 746], [746, 747], [746, 752], [765, 766], [765, 805], [768, 769], [768, 773], [773, 774], [773, 777], [777, 778], [777, 787], [780, 782], [788, 790], [809, 810], [809, 811], [833, 834], [833, 835], [850, 852], [885, 886], [893, 894], [893, 914], [895, 896], [895, 898], [899, 900], [899, 906], [903, 904], [939, 940], [939, 985], [942, 943], [942, 965], [945, 946], [945, 963], [989, 996], [1021, 1022], [1021, 1030], [1051, 1053], [1062, 1063], [1062, 1072], [1064, 1066], [1121, 1122], [1121, 1123], [1123, 1124], [1123, 1130], [1126, 1129], [1188, 1189], [1188, 1190], [1195, 1197], [1199, 1200], [1199, 1219], [1216, 1218], [1240, 1242], [1253, 1254], [1253, 1255], [1273, 1275], [1277, 1278], [1277, 1279], [1285, 1286], [1285, 1287], [1287, 1298], [1287, 1299], [1302, 1303], [1302, 1317], [1304, 1305], [1304, 1306], [1308, 1309], [1308, 1311], [1312, 1313], [1312, 1314], [1314, 1315], [1314, 1316], [1321, 1322], [1321, 1323], [1323, 1324], [1323, 1325], [1325, 1328], [1329, 1330], [1329, 1331], [1344, 1345], [1344, 1366], [1429, 1431], [1431, 1432], [1431, 1441], [1459, 1460], [1459, 1461], [1487, 1488], [1487, 1499], [1489, 1487], [1489, 1497], [1505, 1506], [1505, 1507], [1509, 1510], [1509, 1571], [1510, 1512], [1517, 1518], [1517, 1563], [1558, 1560], [1560, 1561], [1581, 1582], [1581, 1583], [1597, -1574], [1597, 1598], [1620, 1622], [1640, 1648], [1640, 1649], [1666, 1670], [1666, 1671], [1673, 1674], [1673, 1678], [1674, 1675], [1674, 1676], [1681, 1682], [1681, 1728], [1682, 1683], [1682, 1684], [1685, 1686], [1685, 1687], [1693, 1694], [1693, 1695], [1695, 1696], [1695, 1697], [1699, 1700], [1699, 1701], [1701, 1702], [1701, 1711], [1704, 1706], [1717, 1718], [1717, 1719], [1719, 1720], [1719, 1722], [1723, 1724], [1723, 1725], [1725, 1726], [1725, 1727], [1728, 1729], [1728, 1730], [1730, 1731], [1730, 1732], [1735, 1736], [1735, 1737], [1737, 1738], [1737, 1745], [1781, 1782], [1781, 1789], [1783, 1784], [1783, 1785], [1785, 1786], [1785, 1788], [1802, 1803], [1802, 1804], [1811, 1812], [1811, 1816], [1816, 1821], [1816, 1825], [1825, 1826], [1825, 1837], [1829, 1830], [1829, 1837], [1831, 1832], [1831, 1836], [1853, 1854], [1853, 1869], [1855, 1856], [1855, 1857], [1869, 1870], [1869, 1885], [1870, 1871], [1870, 1872], [1872, 1873], [1872, 1879], [1873, 1874], [1873, 1878], [1880, 1869], [1880, 1881], [1903, -1902], [1903, 1904], [1908, 1909], [1908, 1910], [1911, 1912], [1911, 1913], [1919, 1920], [1919, 1921], [1940, 1941], [1940, 1942], [1945, 1946], [1945, 1949], [1949, 1950], [1949, 1952], [1950, 1949], [1950, 1951], [1952, 1953], [1952, 1958], [1959, 1960], [1959, 1961], [1971, 1976], [1971, 1982], [1996, 1998], [2020, 2021], [2020, 2022], [2087, 2088], [2087, 2096], [2101, 2107], [2101, 2108], [2111, 2113], [2132, 2133], [2132, 2140], [2134, 2139], [2164, 2165], [2164, 2176], [2174, 2175], [2174, 2176], [2178, 2179], [2178, 2189], [2196, -2192], [2196, 2197], [2197, 2198], [2197, 2199], [2199, 2196], [2199, 2200], [2236, 2237], [2236, 2238], [2280, 2281], [2280, 2292], [2284, 2285], [2284, 2286], [2312, 2313], [2359, 2360], [2359, 2361], [2361, 2362], [2361, 2363], [2363, 2364], [2363, 2367], [2364, 2365], [2364, 2366], [2381, 2382], [2381, 2414], [2383, 2384], [2383, 2392], [2411, 2381], [2411, 2412], [2415, 2416], [2415, 2423], [2416, 2417], [2416, 2420], [2417, 2418], [2417, 2419], [2421, 2415], [2421, 2422], [2423, 2424], [2423, 2430], [2430, 2432], [2471, 2472], [2471, 2473], [2473, 2474], [2473, 2475], [2475, 2476], [2475, 2479], [2476, 2477], [2476, 2478], [2494, 2495], [2494, 2527], [2498, 2499], [2498, 2501], [2513, 2514], [2513, 2519], [2520, 2494], [2520, 2521], [2529, 2530], [2529, 2543], [2530, 2531], [2530, 2534], [2531, 2532], [2534, 2535], [2544, 2545], [2544, 2546], [2546, 2547], [2546, 2554], [2560, 2561], [2560, 2570], [2582, 2583], [2582, 2589], [2589, 2592], [2607, 2608], [2607, 2609], [2655, 2656], [2655, 2667], [2659, 2660], [2659, 2661], [2687, 2688]], "missing_branches": [[505, 498], [517, 519], [519, -494], [613, 615], [656, 654], [660, 658], [707, 708], [715, 716], [780, 781], [788, 789], [850, 851], [885, 887], [903, 905], [989, 990], [991, 992], [991, 993], [1051, 1052], [1064, 1065], [1126, 1127], [1195, 1196], [1216, 1217], [1240, 1241], [1273, 1274], [1325, 1326], [1429, 1430], [1510, 1511], [1558, 1559], [1560, 1562], [1620, 1621], [1704, 1705], [1996, 1997], [2111, 2112], [2134, 2135], [2312, 2314], [2430, 2431], [2531, 2533], [2534, 2536], [2537, 2529], [2537, 2538], [2589, 2590], [2687, 2689]]}}}, "src\\quant_data_kit\\panel.py": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]], "functions": {"merge_earnings_to_panel": {"executed_lines": [10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [11, 12, 13, 27, 28], "excluded_lines": [], "start_line": 8, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30]], "missing_branches": [[10, 11], [26, 27]]}, "merge_northbound_to_panel": {"executed_lines": [44, 49, 54], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45, 46, 47], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 49]], "missing_branches": [[44, 45]]}, "add_industry_relative_strength": {"executed_lines": [64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [65, 66, 67], "excluded_lines": [], "start_line": 57, "executed_branches": [[64, 69]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 8, 43, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]]}}}, "src\\quant_data_kit\\process_lock.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": [], "functions": {"_acquire_windows_lock": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [[29, 30], [29, 31]], "missing_branches": []}, "_release_windows_lock": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "_acquire_posix_lock": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "_release_posix_lock": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "_windows_file_lock": {"executed_lines": [73, 75, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_posix_file_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_platform_lock_backend": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "process_file_lock": {"executed_lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 34, 43, 62, 71, 72, 93, 94, 114, 120, 126, 127], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\_fetch.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]], "functions": {"fetch_with_retries": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26], "excluded_lines": [], "start_line": 12, "executed_branches": [[20, 21]], "missing_branches": [[20, 26]]}, "fetch_symbols_parallel": {"executed_lines": [37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 55.0, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 29, "executed_branches": [[38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[38, 42], [44, 45], [44, 47], [47, 48]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]]}}}, "src\\quant_data_kit\\providers\\_network.py": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "executed_branches": [], "missing_branches": [[11, -6], [11, 12]], "functions": {"configure_network": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}, "": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}}}, "src\\quant_data_kit\\providers\\_symbols.py": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": [[12, 13], [12, 14]], "functions": {"normalize_symbol": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "to_market_symbol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}, "": {"executed_lines": [3, 6, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}}}, "src\\quant_data_kit\\providers\\akshare.py": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\benchmark.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [[26, 27], [26, 29]], "functions": {"fetch_hs300_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}}}, "src\\quant_data_kit\\providers\\earnings_forecast.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]], "functions": {"_score_forecast_type": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44], [44, 45]], "missing_branches": [[43, 46], [44, 43]]}, "_quarter_end_dates": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[53, 54], [53, 58], [54, 53], [54, 55], [56, 57]], "missing_branches": [[56, 54]]}, "fetch_earnings_forecasts": {"executed_lines": [68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 20, "num_statements": 33, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 60.60606060606061, "percent_statements_covered_display": "61", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 6, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 61, "executed_branches": [[69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 49, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}}}, "src\\quant_data_kit\\providers\\fundamentals.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]], "functions": {"_fetch_one_fundamental": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}, "fetch_fundamentals": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76, 77, 79, 87], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "fetch_fundamentals._task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}}}, "src\\quant_data_kit\\providers\\industry.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]], "functions": {"fetch_industry_returns": {"executed_lines": [27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 14, "num_statements": 27, "percent_covered": 51.42857142857143, "percent_covered_display": "51", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 51.851851851851855, "percent_statements_covered_display": "52", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}}}, "src\\quant_data_kit\\providers\\northbound.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]], "functions": {"_fetch_one_northbound": {"executed_lines": [25, 26, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 8, "num_statements": 24, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60], "excluded_lines": [], "start_line": 20, "executed_branches": [[25, 26]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53]]}, "fetch_northbound_holdings": {"executed_lines": [77, 79, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 71, "executed_branches": [[86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[86, 90], [92, 93], [92, 95], [96, 97]]}, "fetch_northbound_holdings._task": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [82, 83, 84], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 71], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]]}}}, "src\\quant_data_kit\\providers\\prices.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]], "functions": {"_fetch_one_price": {"executed_lines": [37, 38, 76, 77, 78, 79], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 30, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}, "fetch_daily_prices": {"executed_lines": [91, 92, 94, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "fetch_daily_prices._task": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 82], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}}}, "src\\quant_data_kit\\providers\\universe.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]], "functions": {"fetch_hs300_constituents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": [[21, 22], [21, 24]]}, "fetch_hs300_constituents_history": {"executed_lines": [41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 20, "num_statements": 75, "percent_covered": 24.031007751937985, "percent_covered_display": "24", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 26.666666666666668, "percent_statements_covered_display": "27", "num_branches": 54, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 43, "percent_branches_covered": 20.37037037037037, "percent_branches_covered_display": "20"}, "missing_lines": [44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 33, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}}}, "src\\quant_data_kit\\schemas_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]], "functions": {"_field": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_object_schema": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_event_schema": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "_timestamp": {"executed_lines": [394, 395, 397], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [396], "excluded_lines": [], "start_line": 393, "executed_branches": [[395, 397]], "missing_branches": [[395, 396]]}, "_fixed_value": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400, "executed_branches": [], "missing_branches": []}, "_require_positive": {"executed_lines": [406, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405, "executed_branches": [[407, 408], [407, 409]], "missing_branches": []}, "_require_non_negative": {"executed_lines": [413, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412, "executed_branches": [[414, 415], [414, 416]], "missing_branches": []}, "_validate_event_semantics": {"executed_lines": [420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500], "summary": {"covered_lines": 78, "num_statements": 80, "percent_covered": 96.57534246575342, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.5, "percent_statements_covered_display": "98", "num_branches": 66, "num_partial_branches": 3, "covered_branches": 63, "missing_branches": 3, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [426, 468], "excluded_lines": [], "start_line": 419, "executed_branches": [[423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500]], "missing_branches": [[425, 426], [467, 468], [499, -419]]}, "_validate_record_semantics": {"executed_lines": [504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525]], "missing_branches": [[524, -503]]}, "_validate_knowledge_interval": {"executed_lines": [529, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [[529, -528], [529, 532]], "missing_branches": []}, "get_arrow_schema": {"executed_lines": [536, 537, 538, 539, 540, 541], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 538]], "missing_branches": []}, "get_json_schema": {"executed_lines": [545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546], [545, 547]], "missing_branches": []}, "_compiled_json_validator": {"executed_lines": [558, 559, 560, 561, 564], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 554, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "validate_json_record": {"executed_lines": [572, 573, 574, 575, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "validate_event_stream": {"executed_lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [[587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623]], "missing_branches": []}, "validate_arrow_table": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[632, -626], [632, 633]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 52, 64, 69, 187, 196, 206, 207, 208, 211, 221, 234, 290, 297, 380, 393, 400, 405, 412, 419, 503, 528, 535, 544, 553, 554, 567, 580, 626], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "start_line": 1, "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]]}}}, "src\\quant_data_kit\\snapshots.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]], "functions": {"_canonical_frame_bytes": {"executed_lines": [37, 38, 39, 40, 43], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[39, 40]], "missing_branches": [[39, 43]]}, "frame_sha256": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "schema_sha256": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "create_snapshot": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [71, 96, 99], "excluded_lines": [], "start_line": 56, "executed_branches": [[70, 72], [94, 95], [94, 101], [95, 97], [98, 100]], "missing_branches": [[70, 71], [95, 96], [98, 99]]}, "load_snapshot": {"executed_lines": [110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [114], "excluded_lines": [], "start_line": 109, "executed_branches": [[113, 115], [116, 117], [116, 118]], "missing_branches": [[113, 114]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 46, 50, 56, 109], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]]}}}, "src\\quant_data_kit\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]], "functions": {"save_parquet": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "load_parquet": {"executed_lines": [38, 39, 41], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [40], "excluded_lines": [], "start_line": 37, "executed_branches": [[39, 41]], "missing_branches": [[39, 40]]}, "_date_bounds": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, 47]], "missing_branches": [[45, 46]]}, "build_manifest": {"executed_lines": [62, 63, 64, 67, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "write_manifest": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "save_manifest": {"executed_lines": [107, 108, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "load_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [124, 125, 126], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "parse_date": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "cache_covers_range": {"executed_lines": [140, 142, 143, 144, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [141], "excluded_lines": [], "start_line": 133, "executed_branches": [[140, 142]], "missing_branches": [[140, 141]]}, "should_refresh_cache": {"executed_lines": [155, 156, 158, 159], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 158]], "missing_branches": [[156, 157]]}, "incremental_start_date": {"executed_lines": [163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [168], "excluded_lines": [], "start_line": 162, "executed_branches": [[164, 165], [164, 166], [167, 169]], "missing_branches": [[167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44, 51, 87, 95, 123, 129, 133, 148, 162], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DataManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]]}}}, "src\\quant_data_kit\\temporal.py": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]], "functions": {"_normalize_times": {"executed_lines": [28, 29, 30, 32, 33, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [31, 34], "excluded_lines": [], "start_line": 27, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29]], "missing_branches": [[30, 31], [33, 34]]}, "point_in_time_join": {"executed_lines": [55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 69.38775510204081, "percent_covered_display": "69", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [56, 60, 72, 86, 87, 88, 89, 104], "excluded_lines": [], "start_line": 38, "executed_branches": [[55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105]], "missing_branches": [[55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104]]}, "audit_point_in_time": {"executed_lines": [115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [117, 127, 128, 129], "excluded_lines": [], "start_line": 108, "executed_branches": [[116, 118], [121, 122], [121, 123], [126, 130]], "missing_branches": [[116, 117], [126, 127]]}, "apply_symbol_lifecycle": {"executed_lines": [149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [150, 154], "excluded_lines": [], "start_line": 139, "executed_branches": [[149, 151], [153, 155]], "missing_branches": [[149, 150], [153, 154]]}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 38, 108, 139], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]]}}}, "src\\quant_data_kit\\temporal_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]], "functions": {"ensure_utc_datetime": {"executed_lines": [18, 19, 21, 22, 23, 24, 27, 28, 29], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [20, 25, 26], "excluded_lines": [], "start_line": 16, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29]]}, "_utc_series": {"executed_lines": [33, 35, 36, 37, 38, 39, 40, 42, 43], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [34, 41], "excluded_lines": [], "start_line": 32, "executed_branches": [[33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39]], "missing_branches": [[33, 34], [38, 41]]}, "validate_bitemporal_frame": {"executed_lines": [62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105], "summary": {"covered_lines": 21, "num_statements": 33, "percent_covered": 61.224489795918366, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104], "excluded_lines": [], "start_line": 52, "executed_branches": [[63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105]], "missing_branches": [[63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104]]}, "point_in_time_join_bitemporal": {"executed_lines": [122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 38, "num_statements": 42, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [123, 127, 155, 168], "excluded_lines": [], "start_line": 108, "executed_branches": [[122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[122, 123], [126, 127], [154, 155], [167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 32, 46, 47, 48, 49, 52, 108], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BitemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]]}}}, "src\\quant_data_kit\\validate.py": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]], "functions": {"validate_price_frame": {"executed_lines": [21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57], "summary": {"covered_lines": 18, "num_statements": 25, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72", "num_branches": 18, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55], "excluded_lines": [], "start_line": 14, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55]]}, "validate_calendar_coverage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}, "": {"executed_lines": [3, 5, 7, 9, 11, 14, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 1, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}}}, "tests\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_adapters_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": [], "functions": {"load_messages": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "binance_adapter": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "okx_adapter": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cn_adapter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "test_crypto_fixture_adapters_cover_required_events_and_replay_l2": {"executed_lines": [111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "test_binance_and_okx_map_to_same_stable_instrument_ids": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_crypto_fixtures_enter_normalized_layer_without_quarantine": {"executed_lines": [155, 159, 160, 169, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154, "executed_branches": [[155, -154], [155, 159]], "missing_branches": []}, "test_domestic_neutral_fixture_is_explicitly_not_market_data_certified": {"executed_lines": [183, 184, 185, 186, 190, 191, 192, 193], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "test_domestic_neutral_adapter_rejects_market_certification_claim": {"executed_lines": [200, 201, 202, 203], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_provider_sequence_gap_is_rejected_before_v2_emission": {"executed_lines": [207, 208, 209, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_binance_update_range_and_okx_trade_side_are_strict": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_failure": {"executed_lines": [225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224, "executed_branches": [], "missing_branches": []}, "test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract": {"executed_lines": [264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot": {"executed_lines": [292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_fixture_index_hashes_are_exact": {"executed_lines": [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[331, -322], [331, 332]], "missing_branches": []}, "test_adapter_context_time_and_sequence_primitives_fail_closed": {"executed_lines": [337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [], "missing_branches": []}, "test_adapter_constructors_and_unknown_message_kinds_are_strict": {"executed_lines": [404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 45, 60, 75, 88, 105, 141, 154, 182, 199, 206, 213, 224, 241, 263, 291, 322, 336, 403], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": []}}}, "tests\\test_benchmark_normalized_l2.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[14, -10], [14, 15]], "missing_branches": [], "functions": {"test_synthetic_l2_fixture_is_sequential_and_schema_valid": {"executed_lines": [11, 12, 13, 14, 15, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}, "test_small_benchmark_proves_end_to_end_determinism": {"executed_lines": [24, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}}}, "tests\\test_capture_v2_collector_cli_transport.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 114, 115, 116, 119, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 523, 525, 526, 527, 529, 530, 531, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 592, 593, 594, 600, 614, 615, 616, 617, 619, 620, 621, 623, 624, 625, 626, 629, 630, 631, 632, 634, 635, 637, 638, 640, 641, 643, 644, 646, 647, 649, 650, 651, 653, 654, 656, 657, 658, 660, 661, 663, 664, 665, 667, 668, 669, 671, 672, 673, 676, 679, 680, 681, 682, 683, 685, 686, 688, 689, 690, 692, 693, 695, 697, 698, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 712, 713, 714, 716, 717, 719, 720, 722, 723, 725, 726, 727], "summary": {"covered_lines": 361, "num_statements": 364, "percent_covered": 98.67724867724868, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.17582417582418, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [86, 691, 694], "excluded_lines": [], "executed_branches": [[85, 87], [133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511], [690, 692], [692, 693], [692, 695]], "missing_branches": [[85, 86], [690, 691]], "functions": {"FakeClock.__init__": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [64, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [69, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "FakeConnection.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "FakeConnection.send": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "FakeConnection.receive": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 83, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnection.close": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "FakeConnector.__init__": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "FakeConnector.connect": {"executed_lines": [101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "FailedConnector.__init__": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "FailedConnector.connect": {"executed_lines": [115, 116], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "FakeHttp.__init__": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "FakeHttp.get": {"executed_lines": [124, 125, 126, 129], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "messages_for": {"executed_lines": [133, 134, 135, 136, 146, 147, 148, 149, 150], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148]], "missing_branches": []}, "roots": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "distinct_identity": {"executed_lines": [203, 204], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "storage_guard": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [], "missing_branches": []}, "config": {"executed_lines": [220, 221, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_full_eight_stream_bounded_probe_archives_and_normalizes": {"executed_lines": [243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "test_preflight_same_physical_volume_pauses_without_network": {"executed_lines": [301, 302, 303, 304, 305, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [], "missing_branches": []}, "test_connect_failures_use_bounded_retry_and_end_paused": {"executed_lines": [327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted": {"executed_lines": [363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive.archive_segment": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight": {"executed_lines": [402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398, "executed_branches": [], "missing_branches": []}, "test_cli_run_requires_confirmation_and_probe_bound": {"executed_lines": [438, 439, 440, 451, 452, 453, 454], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes": {"executed_lines": [460, 462, 463, 471, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[495, 496], [495, 511]], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.write": {"executed_lines": [472, 473, 474], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.__init__": {"executed_lines": [523], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.preflight_only": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.run": {"executed_lines": [530, 531], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "test_runner_fail_closed_internal_guards_and_raw_metadata": {"executed_lines": [544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage": {"executed_lines": [592, 593, 594, 600, 614, 615, 616, 617, 619, 620, 623, 624, 625, 626], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive.archive_segment": {"executed_lines": [621], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors": {"executed_lines": [630, 631, 632, 634, 635, 637, 640, 643, 646, 649, 650, 651, 653, 656, 657, 658, 660, 661, 663, 664, 665, 667, 668, 671, 672, 673], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__enter__": {"executed_lines": [638], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 637, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__exit__": {"executed_lines": [641], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 640, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.read": {"executed_lines": [644], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 643, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.geturl": {"executed_lines": [647], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 646, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.failed": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse.geturl": {"executed_lines": [669], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls": {"executed_lines": [679, 680, 685, 688, 697, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 712, 713, 714, 716, 719, 720, 722, 725, 726, 727], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 676, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.__init__": {"executed_lines": [681, 682, 683], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 680, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.send": {"executed_lines": [686], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 685, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.recv": {"executed_lines": [689, 690, 692, 693, 695], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [691, 694], "excluded_lines": [], "start_line": 688, "executed_branches": [[690, 692], [692, 693], [692, 695]], "missing_branches": [[690, 691]]}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.close": {"executed_lines": [698], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connected": {"executed_lines": [717], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 716, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connection_failure": {"executed_lines": [723], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 722, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 194, 202, 207, 219, 242, 300, 326, 362, 398, 437, 457, 543, 591, 629, 676], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [60, 61, 64, 65, 66, 69, 70], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "FakeConnection": {"executed_lines": [75, 76, 77, 78, 81, 84, 85, 87, 90], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 73, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnector": {"executed_lines": [95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "FailedConnector": {"executed_lines": [112, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "FakeHttp": {"executed_lines": [121, 124, 125, 126, 129], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator": {"executed_lines": [523, 526, 527, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 615, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive": {"executed_lines": [621], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response": {"executed_lines": [638, 641, 644, 647], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 634, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.BadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 660, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse": {"executed_lines": [669], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying": {"executed_lines": [681, 682, 683, 686, 689, 690, 692, 693, 695, 698], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [691, 694], "excluded_lines": [], "start_line": 679, "executed_branches": [[690, 692], [692, 693], [692, 695]], "missing_branches": [[690, 691]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 592, 593, 594, 600, 614, 615, 616, 617, 619, 620, 623, 624, 625, 626, 629, 630, 631, 632, 634, 635, 637, 640, 643, 646, 649, 650, 651, 653, 654, 656, 657, 658, 660, 661, 663, 664, 665, 667, 668, 671, 672, 673, 676, 679, 680, 685, 688, 697, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 712, 713, 714, 716, 717, 719, 720, 722, 723, 725, 726, 727], "summary": {"covered_lines": 304, "num_statements": 304, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511]], "missing_branches": []}}}, "tests\\test_capture_v2_models_storage.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 29, 38, 39, 40, 42, 43, 44, 49, 52, 53, 54, 55, 57, 58, 59, 60, 62, 67, 68, 69, 72, 73, 84, 91, 92, 109, 110, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 125, 126, 127, 128, 132, 133, 140, 141, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 167, 173, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 211, 212, 213, 220, 221, 224, 225, 226, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 289, 290, 292, 300, 301, 304, 307, 308, 309, 310, 312, 317, 319, 320, 322, 323, 325, 326, 328, 329, 331, 332, 334, 335, 337, 338, 341, 342, 345, 346, 347, 348, 349, 356, 357, 358, 360, 361, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 391, 392, 401, 402, 403, 404, 405, 406, 407, 409, 414, 423, 424, 427, 430, 431, 432, 438, 439, 441, 442, 443, 452, 453, 454, 456, 458, 460, 461, 462, 463, 465, 466, 467, 470, 473, 475, 476, 478, 487, 488, 490, 491, 496, 497, 499, 500, 509, 510, 513, 514, 515, 517, 518, 519, 520, 521, 523, 525, 526, 528, 529, 530, 531, 534, 537, 539, 540, 541, 542, 544, 545, 546, 549, 550, 551, 553, 554, 555, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 578, 581, 582, 584, 586, 587, 589, 590, 592, 593, 594, 596, 597, 598, 599, 600, 602, 603, 604, 606, 607, 609, 610, 616, 617, 623, 624, 626, 632, 633, 635, 636, 646, 647, 648, 650, 652, 658, 659, 661, 667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678], "summary": {"covered_lines": 354, "num_statements": 357, "percent_covered": 98.9041095890411, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.15966386554622, "percent_statements_covered_display": "99", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [63, 64, 547], "excluded_lines": [], "executed_branches": [[167, 173], [167, 175], [178, 179], [178, 182], [461, 462], [461, 463], [545, 546]], "missing_branches": [[545, 547]], "functions": {"FakeClock.__init__": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [58, 59, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "identities": {"executed_lines": [68, 69], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "guard": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "raw_frame": {"executed_lines": [91, 92], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [], "missing_branches": []}, "storage_roots": {"executed_lines": [110, 111, 112, 113, 114, 115, 116], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [], "missing_branches": []}, "test_default_scope_is_exact_sorted_and_credential_free": {"executed_lines": [120, 121, 122, 125, 126, 127, 128, 132, 133, 140, 141], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_scope_config_stream_and_retry_guards": {"executed_lines": [145, 146, 147, 148, 149, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 167, 173, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [[167, 173], [167, 175], [178, 179], [178, 182]], "missing_branches": []}, "test_symbol_mapping_resolution_is_effective_and_point_in_time": {"executed_lines": [199, 200, 201, 202, 211, 212, 213, 220, 221, 224, 225, 226], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_raw_frame_round_trip_and_monotonic_clock": {"executed_lines": [232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure": {"executed_lines": [263, 264, 265, 266, 267, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 289, 292, 300, 301], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.failed_sink": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths": {"executed_lines": [307, 308, 309, 310, 312, 317, 319, 320, 322, 325, 326, 328, 331, 332, 334, 337, 338, 341, 342], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.low_archive": {"executed_lines": [323], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_identity": {"executed_lines": [329], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_capacity": {"executed_lines": [335], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_segment_rotation_restore_and_no_cleanup": {"executed_lines": [346, 347, 348, 349, 356, 357, 358, 360, 361, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345, "executed_branches": [], "missing_branches": []}, "test_segment_time_rotation_identity_order_and_capacity_fail_closed": {"executed_lines": [389, 390, 391, 392, 401, 402, 403, 404, 405, 406, 407, 409, 414, 423, 424], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause": {"executed_lines": [430, 431, 432, 438, 439, 441, 442, 443, 452, 453, 454, 456, 458, 460, 465, 466, 467], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause.wrong_restore_hash": {"executed_lines": [461, 462, 463], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [[461, 462], [461, 463]], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths": {"executed_lines": [473, 475, 476, 478, 487, 488, 490, 491, 496, 497, 499, 500, 509, 510, 513, 514, 515, 517, 518, 519, 520, 521, 523, 525, 528, 529, 530, 531], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 470, "executed_branches": [], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths.replace_failed": {"executed_lines": [526], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed": {"executed_lines": [537, 539, 540, 541, 542, 544, 549, 550, 551, 553, 554, 555, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed.wrong_preflight_hash": {"executed_lines": [545, 546], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [547], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546]], "missing_branches": [[545, 547]]}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed": {"executed_lines": [581, 582, 584, 586, 587, 589, 592, 596, 597, 598, 599, 600, 602, 603, 606, 609, 616, 617, 623, 624, 626, 632, 633, 635, 652, 658, 659, 661, 667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.__init__": {"executed_lines": [590], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 589, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.resolve": {"executed_lines": [593, 594], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 592, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__init__": {"executed_lines": [604], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__call__": {"executed_lines": [607], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.kernel": {"executed_lines": [610], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 609, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response": {"executed_lines": [636, 650], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 635, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response.respond": {"executed_lines": [646, 647, 648], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 29, 38, 39, 40, 42, 43, 44, 49, 52, 53, 57, 62, 67, 72, 84, 109, 119, 144, 198, 231, 262, 304, 345, 388, 427, 470, 534, 578], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [54, 55, 58, 59, 60], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [63, 64], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath": {"executed_lines": [590, 593, 594], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 586, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub": {"executed_lines": [604, 607], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 29, 38, 39, 40, 42, 43, 44, 49, 52, 53, 57, 62, 67, 68, 69, 72, 73, 84, 91, 92, 109, 110, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 125, 126, 127, 128, 132, 133, 140, 141, 144, 145, 146, 147, 148, 149, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 167, 173, 174, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 201, 202, 211, 212, 213, 220, 221, 224, 225, 226, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, 262, 263, 264, 265, 266, 267, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 289, 290, 292, 300, 301, 304, 307, 308, 309, 310, 312, 317, 319, 320, 322, 323, 325, 326, 328, 329, 331, 332, 334, 335, 337, 338, 341, 342, 345, 346, 347, 348, 349, 356, 357, 358, 360, 361, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 391, 392, 401, 402, 403, 404, 405, 406, 407, 409, 414, 423, 424, 427, 430, 431, 432, 438, 439, 441, 442, 443, 452, 453, 454, 456, 458, 460, 461, 462, 463, 465, 466, 467, 470, 473, 475, 476, 478, 487, 488, 490, 491, 496, 497, 499, 500, 509, 510, 513, 514, 515, 517, 518, 519, 520, 521, 523, 525, 526, 528, 529, 530, 531, 534, 537, 539, 540, 541, 542, 544, 545, 546, 549, 550, 551, 553, 554, 555, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 578, 581, 582, 584, 586, 587, 589, 592, 596, 597, 598, 599, 600, 602, 603, 606, 609, 610, 616, 617, 623, 624, 626, 632, 633, 635, 636, 646, 647, 648, 650, 652, 658, 659, 661, 667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678], "summary": {"covered_lines": 344, "num_statements": 345, "percent_covered": 99.43342776203966, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.71014492753623, "percent_statements_covered_display": "99", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [547], "excluded_lines": [], "start_line": 1, "executed_branches": [[167, 173], [167, 175], [178, 179], [178, 182], [461, 462], [461, 463], [545, 546]], "missing_branches": [[545, 547]]}}}, "tests\\test_capture_v2_synchronizers_epoch.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 369, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.24528301886792, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": [], "functions": {"stream": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "resolver": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "frame": {"executed_lines": [59, 60, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "binance_snapshot": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "binance_update": {"executed_lines": [87, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[97, 98], [97, 99]], "missing_branches": []}, "okx_message": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "storage": {"executed_lines": [124, 125, 126, 128, 132, 141], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit": {"executed_lines": [145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed": {"executed_lines": [177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [], "missing_branches": []}, "test_binance_snapshot_malformed_and_crossed": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [], "missing_branches": []}, "test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot": {"executed_lines": [217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset": {"executed_lines": [237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "test_okx_gap_heartbeat_levels_errors_and_envelope_guards": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "test_binance_wire_and_book_negative_branches_are_fail_closed": {"executed_lines": [305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [[341, 342], [341, 347]], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync": {"executed_lines": [367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver.resolve": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_sequence_normalizer_no_change_branch_is_strict": {"executed_lines": [395, 396, 397, 400, 401, 402, 405, 406, 409, 410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394, "executed_branches": [], "missing_branches": []}, "test_normalized_epoch_journal_publishes_complete_raw_lineage": {"executed_lines": [419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418, "executed_branches": [], "missing_branches": []}, "test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible": {"executed_lines": [461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "test_epoch_configuration_closed_abort_and_part_integrity_guards": {"executed_lines": [530, 531, 532, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 53, 58, 78, 86, 102, 123, 144, 176, 201, 208, 216, 236, 279, 304, 366, 394, 418, 460, 529], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553], "summary": {"covered_lines": 258, "num_statements": 260, "percent_covered": 99.24242424242425, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23076923076923, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": []}}}, "tests\\test_catalog.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_register_and_list": {"executed_lines": [8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_catalog_factors.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_registers_quant_factors_stack": {"executed_lines": [8, 9, 10, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "test_qdk_catalog_list_shows_factors_version": {"executed_lines": [15, 16, 17, 18, 19], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_curated.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "normalized_trades": {"executed_lines": [43, 52, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "curate": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "test_session_bar_aggregation_is_deterministic_and_session_anchored": {"executed_lines": [78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_session_bar_refuses_missing_or_future_session_start": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_curated_revision_is_immutable_and_lineage_changes_snapshot": {"executed_lines": [119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_curated_partition_mutation_is_detected": {"executed_lines": [164, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_curated_reader_rejects_dataset_and_snapshot_path_traversal": {"executed_lines": [178, 179, 180, 181], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 42, 64, 77, 106, 118, 163, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_data_lake.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade_record": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "admitted_raw": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "test_raw_bytes_are_immutable_idempotent_and_conflict_on_key_reuse": {"executed_lines": [75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "test_raw_mutation_is_detected": {"executed_lines": [114, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [], "missing_branches": []}, "test_raw_request_metadata_must_be_canonical_json": {"executed_lines": [130, 131], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "test_capacity_policy_stops_with_explicit_alert": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_cleanup_requires_verified_archive_restore_and_explicit_confirmation": {"executed_lines": [166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_normalized_partitions_quarantine_bad_stream_and_pin_duckdb_snapshot": {"executed_lines": [229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "test_normalized_partition_mutation_fails_hash_validation": {"executed_lines": [274, 275, 283, 284, 285, 286, 287, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_cross_is_quarantined_before_research_layer": {"executed_lines": [292, 293, 319, 336, 344, 345, 346, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_checkpoint_mismatch_is_quarantined": {"executed_lines": [351, 352, 378, 379, 388, 389, 390, 391], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_provider_mismatch_and_non_finite_payload_are_quarantine_evidence": {"executed_lines": [399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 56, 74, 113, 129, 141, 163, 226, 273, 291, 350, 396], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_integrity_branch_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]], "functions": {"normalized": {"executed_lines": [42, 51, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "legacy_normalized": {"executed_lines": [64, 73, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw": {"executed_lines": [88, 89, 98, 107, 108, 109, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [], "missing_branches": []}, "readdress_normalized": {"executed_lines": [135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177]], "missing_branches": []}, "test_normalized_manifest_defense_branches": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches": {"executed_lines": [247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 269, 270, 271], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches.mismatched_load": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards": {"executed_lines": [285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [327], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards.wrong_staging_hash": {"executed_lines": [300, 301], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301]], "missing_branches": [[300, 302]]}, "test_normalized_claim_schema_and_manifest_file_shape": {"executed_lines": [340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "test_legacy_normalized_manifest_remains_strictly_verifiable": {"executed_lines": [408, 409, 410, 411], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed": {"executed_lines": [415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414, "executed_branches": [], "missing_branches": []}, "test_legacy_snapshot_rejects_unexpected_file": {"executed_lines": [469, 470, 471, 472, 473], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [], "missing_branches": []}, "test_raw_path_staging_and_archive_negative_guards": {"executed_lines": [484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": []}, "test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed": {"executed_lines": [529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "readdress_curated": {"executed_lines": [581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": []}, "curated": {"executed_lines": [604, 605], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_defense_branches": {"executed_lines": [667, 668, 669, 670], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_file_and_extra_file_guards": {"executed_lines": [679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_l2_reconstructed_empty_level_guard": {"executed_lines": [706, 707, 708], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 63, 85, 128, 180, 231, 243, 281, 339, 357, 402, 414, 468, 480, 528, 574, 603, 617, 661, 678, 705], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "start_line": 1, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]]}}}, "tests\\test_l2_replay.py": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 223, 224, 225, 226, 227, 228, 229, 230, 245, 246, 260, 261, 262, 263, 264, 265, 266, 267, 268], "summary": {"covered_lines": 136, "num_statements": 136, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"snapshot": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11, "executed_branches": [], "missing_branches": []}, "delta": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic": {"executed_lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "test_gap_duplicate_and_out_of_order_are_rejected": {"executed_lines": [102, 103], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101, "executed_branches": [], "missing_branches": []}, "test_crossed_delta_is_transactional_and_does_not_pollute_state": {"executed_lines": [107, 108, 109, 110, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_delete_absent_level_and_price_scale_change_are_rejected": {"executed_lines": [116, 117, 118, 125, 126, 127, 128, 129, 130], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "test_checkpoint_mismatch_and_missing_checkpoint_fail": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_snapshot_duplicate_price_and_cross_are_rejected_by_frozen_contract": {"executed_lines": [142, 143, 144, 145, 146, 147, 148, 149], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_resync_snapshot_cannot_switch_stream_identity": {"executed_lines": [153, 154, 155, 156, 157, 158, 159, 160], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [], "missing_branches": []}, "test_uninitialized_unsupported_and_non_snapshot_entry_fail_closed": {"executed_lines": [164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_snapshot_and_delta_time_and_sequence_must_strictly_advance": {"executed_lines": [178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "test_validated_snapshot_and_batch_guards_preserve_state": {"executed_lines": [197, 198, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [], "missing_branches": []}, "test_private_validated_dispatch_and_uniform_batch_fail_closed": {"executed_lines": [224, 225, 226, 227, 228, 229, 230, 245, 246, 260, 261, 262, 263, 264, 265, 266, 267, 268], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 7, 8, 11, 50, 79, 93, 101, 106, 115, 133, 141, 152, 163, 177, 196, 223], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 101, 102, 103, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 198, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 223, 224, 225, 226, 227, 228, 229, 230, 245, 246, 260, 261, 262, 263, 264, 265, 266, 267, 268], "summary": {"covered_lines": 136, "num_statements": 136, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_m2_audit_regressions.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]], "functions": {"trade": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "raw": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "normalized": {"executed_lines": [78, 79, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable": {"executed_lines": [95, 96, 105, 107, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable.interrupted_replace": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[108, 109], [108, 110]], "missing_branches": []}, "test_preexisting_half_object_is_quarantined_without_blocking_retry": {"executed_lines": [122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_manifest_anchor_detects_coordinated_retention_and_collection_mutation": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_raw_write_read_and_cleanup_reject_junction_escape": {"executed_lines": [159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [171, 188], "excluded_lines": [], "start_line": 158, "executed_branches": [[170, 172], [187, 189]], "missing_branches": [[170, 171], [187, 188]]}, "test_raw_write_rejects_symbolic_link_escape": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "test_cleanup_rejects_fabricated_missing_and_remote_archives": {"executed_lines": [223, 224, 231, 232, 233, 240, 241, 242], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222, "executed_branches": [[231, 232], [231, 240]], "missing_branches": []}, "test_normalized_requires_existing_unmodified_raw_reference": {"executed_lines": [252, 253, 256, 257, 265, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "test_global_event_id_duplicates_across_streams_are_all_quarantined": {"executed_lines": [279, 280, 281, 282, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278, "executed_branches": [], "missing_branches": []}, "test_arrow_canonical_timestamp_and_physical_snapshot_binding": {"executed_lines": [298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [], "missing_branches": []}, "test_duckdb_blocks_direct_cte_and_parameterized_external_reads": {"executed_lines": [326, 327, 328, 331, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [[338, -325], [338, 339]], "missing_branches": []}, "test_curated_rejects_fake_lineage_and_binds_physical_content": {"executed_lines": [344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_normalized_and_curated_writers_apply_capacity_gate": {"executed_lines": [382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 65, 77, 91, 121, 143, 157, 158, 209, 210, 222, 251, 278, 297, 325, 343, 381], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 1, "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]]}}}, "tests\\test_m2_coverage_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": [], "functions": {"_replace": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "test_schema_negative_branch_matrix": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "test_schema_delete_delta_corporate_ratio_and_registry_fail_closed": {"executed_lines": [99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[114, 115], [114, 119]], "missing_branches": []}, "test_data_lake_guard_branches_are_explicit": {"executed_lines": [130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [[135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176]], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable": {"executed_lines": [202, 203, 204, 206, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable.fail_replace": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_raw_manifest_fields_are_independently_anchored": {"executed_lines": [250, 251, 252, 253, 254, 255, 256], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "test_raw_directory_claim_and_cleanup_state_guards": {"executed_lines": [260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [], "missing_branches": []}, "test_quarantine_published_batch_is_fully_verified": {"executed_lines": [302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301, "executed_branches": [[313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322]], "missing_branches": []}, "test_empty_quarantine_and_unknown_event_helpers_are_closed": {"executed_lines": [334, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit": {"executed_lines": [350, 356, 358, 363, 370, 371, 372, 374, 377, 378, 386, 388, 393, 400, 401, 402, 404, 407, 408, 416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.windows_lock": {"executed_lines": [359, 360, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358, "executed_branches": [[360, -358], [360, 361]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.always_contended": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_lock": {"executed_lines": [389, 390, 391], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [[390, -388], [390, 391]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_always_contended": {"executed_lines": [405], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_raw_claim_cleanup_and_deleting_state_tampering_fail_closed": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[444, 448], [444, 457]], "missing_branches": []}, "test_normalized_admission_and_snapshot_metadata_guards": {"executed_lines": [472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_curated_writer_and_reader_negative_guards": {"executed_lines": [512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_and_revision_tampering_are_rejected": {"executed_lines": [571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 64, 93, 98, 129, 198, 235, 244, 259, 300, 301, 333, 349, 425, 471, 511, 570], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": []}}}, "tests\\test_m2_integration.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]], "functions": {"crypto_context": {"executed_lines": [20, 21, 27, 36], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 19, "executed_branches": [[20, 21]], "missing_branches": [[20, 29]]}, "test_public_m2_api_and_version_are_exposed": {"executed_lines": [40, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, -39], [41, 51]], "missing_branches": []}, "test_build_and_runtime_versions_share_one_authoritative_source": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable": {"executed_lines": [62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "test_domestic_fixture_chain_remains_fixture_only": {"executed_lines": [136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 39, 54, 61, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]]}}}, "tests\\test_m2_process_integrity.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]], "functions": {"_raw_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [51, 52, 53, 55, 62, 63, 64, 73, 74, 75], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": [[52, 53], [52, 63]]}, "_raw_process.crash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": [[56, 59], [56, 60]]}, "_cleanup_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [85, 86, 87, 94, 95, 96], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "_quarantine_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [100, 101, 102, 109, 110, 111], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_normalized_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [121, 122, 123, 131, 132, 133], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [137, 138, 139, 141, 146, 147, 148], "excluded_lines": [], "start_line": 136, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process.crash_before_replace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[142, 143], [142, 144]]}, "_normalized_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [156, 158, 163, 164], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "_normalized_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 158, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "_curated_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [180, 181, 182, 194, 195, 196], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [200, 202, 207, 208], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [203, 204, 205], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": [[203, 204], [203, 205]]}, "_hold_staging_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230, 236, 237, 238, 239], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "_run_pair": {"executed_lines": [243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 242, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264]], "missing_branches": [[254, 255]]}, "_raw": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_normalized": {"executed_lines": [282, 283, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_raw_key_lock_is_process_safe": {"executed_lines": [297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, 307], [306, 310]], "missing_branches": []}, "test_raw_key_claim_survives_corruption_and_hard_exit_staging": {"executed_lines": [317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [], "missing_branches": []}, "test_raw_key_claim_is_source_global_across_collection_dates": {"executed_lines": [353, 354, 363, 364, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes": {"executed_lines": [382, 383, 384, 385, 386, 394, 395, 397, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[415, 416], [415, 420]], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes.fail_once": {"executed_lines": [399, 400, 401, 402], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, 400], [399, 402]], "missing_branches": []}, "test_cleanup_same_key_is_process_idempotent": {"executed_lines": [433, 434, 435, 436, 437, 445, 452, 453, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable": {"executed_lines": [461, 462, 463, 464, 466, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable.fail_manifest": {"executed_lines": [468, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466, "executed_branches": [[468, 469], [468, 471]], "missing_branches": []}, "test_adapter_batch_transaction_rolls_back_final_validation_failure": {"executed_lines": [507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[515, 516], [515, 518], [527, 528], [527, 529]], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 579, 580, 581, 589, 590, 591, 599], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry.fail_snapshot_publish": {"executed_lines": [574, 575, 576, 577], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "test_event_claim_and_curated_revision_are_process_safe": {"executed_lines": [603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding": {"executed_lines": [637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovery_is_process_safe": {"executed_lines": [658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 657, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovers_and_preserves_binding": {"executed_lines": [694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovery_is_process_safe": {"executed_lines": [742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 741, "executed_branches": [], "missing_branches": []}, "_curated_process_once": {"executed_lines": [766], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 765, "executed_branches": [], "missing_branches": []}, "test_atomic_normalized_and_curated_staging_recover_after_hard_exit": {"executed_lines": [779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 778, "executed_branches": [[782, 783], [782, 790]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 269, 281, 295, 296, 316, 352, 376, 377, 432, 457, 502, 503, 532, 602, 636, 657, 693, 741, 765, 778], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 1, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]]}}}, "tests\\test_normalized_v3.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 23, 24, 25, 26, 27, 29, 36, 37, 38, 39, 40, 43, 51, 52, 63, 64, 65, 68, 69, 80, 83, 85, 86, 87, 88, 89, 90, 98, 106, 107, 108, 109, 113, 117, 118, 119, 120, 121, 122, 123, 124, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 182, 183, 184, 185, 186, 187, 195, 198, 199, 200, 208, 209, 212, 213, 214, 215, 216, 218, 219, 220, 221, 223, 224, 225, 228, 229, 230, 235, 236, 244, 247, 250, 252, 253, 254, 255, 263, 268, 269, 270, 271, 272, 273, 276, 277, 286, 289, 290, 291, 292, 293, 294, 295, 298, 301, 303, 308, 313, 314, 315, 316, 319, 320, 322, 323, 324, 325, 326, 331, 333, 334, 341, 346, 348, 353, 355, 356, 361, 363, 364, 365, 366, 367, 370, 373, 374, 375, 382, 383, 384, 385, 386, 404, 405, 406, 407, 408, 411, 414, 415, 416, 417, 418, 419, 420, 421, 423, 424, 429, 430, 436, 438, 439, 440, 441, 442, 443, 448, 451, 452, 454, 459, 460, 461, 462, 470, 471, 472, 473, 484, 487, 488, 489, 490, 491, 492, 493, 501, 506, 507, 508, 519, 522, 523, 524, 525, 526, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 553, 557, 558, 560, 562, 563, 564, 565, 567, 568, 569, 570, 571, 573, 574, 575, 576], "summary": {"covered_lines": 269, "num_statements": 269, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[118, 119], [118, 122], [123, 124], [123, 133], [149, 150], [149, 153], [153, -137], [153, 154], [164, 165], [164, 170], [276, 277], [276, 286], [363, -319], [363, 364], [384, 385], [384, 386], [404, -370], [404, 405], [523, 524], [523, 525], [562, 563], [562, 565]], "missing_branches": [], "functions": {"_record_batch": {"executed_lines": [37, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [], "missing_branches": []}, "_strict_batches": {"executed_lines": [51, 52], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": []}, "_assert_no_snapshot": {"executed_lines": [64, 65], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "_raw": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims": {"executed_lines": [83, 85, 86, 87, 88, 89, 90, 98, 106, 107, 108, 109, 113, 117, 118, 119, 120, 121, 122, 123, 124, 133, 134], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[118, 119], [118, 122], [123, 124], [123, 133]], "missing_branches": []}, "test_native_writer_validator_matches_frozen_validator_for_l2_edges": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137, "executed_branches": [[149, 150], [149, 153], [153, -137], [153, 154]], "missing_branches": []}, "test_v3_manifest_is_compact_and_does_not_create_per_event_json": {"executed_lines": [162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 182, 183, 184, 185, 186, 187, 195], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[164, 165], [164, 170]], "missing_branches": []}, "test_missing_claim_index_recovers_but_tampering_fails_closed": {"executed_lines": [199, 200, 208, 209, 212, 213, 214, 215, 216, 218, 219, 220, 221, 223, 224, 225], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_streaming_writer_applies_capacity_gate_before_partition_write": {"executed_lines": [229, 230, 235, 236, 244], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints": {"executed_lines": [250, 252, 253, 254, 255, 263, 268, 269, 270, 271, 272, 273, 276, 277, 286], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[276, 277], [276, 286]], "missing_branches": []}, "test_record_batch_reader_is_a_supported_strict_input": {"executed_lines": [290, 291, 292, 293, 294, 295], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries": {"executed_lines": [301, 303, 308, 313, 314, 315, 316], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298, "executed_branches": [], "missing_branches": []}, "test_arrow_schema_pit_sequence_and_duplicate_fail_closed": {"executed_lines": [320, 322, 323, 324, 325, 326, 331, 333, 334, 341, 346, 348, 353, 355, 356, 361, 363, 364, 365, 366, 367], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319, "executed_branches": [[363, -319], [363, 364]], "missing_branches": []}, "test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected": {"executed_lines": [373, 374, 375, 382, 383, 384, 385, 386, 404, 405, 406, 407, 408], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[384, 385], [384, 386], [404, -370], [404, 405]], "missing_branches": []}, "test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed": {"executed_lines": [414, 415, 416, 417, 418, 419, 420, 421, 423, 424, 429, 430, 436, 438, 439, 440, 441, 442, 443, 448], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411, "executed_branches": [], "missing_branches": []}, "test_arrow_float_schema_preserves_frozen_claims_and_logical_rows": {"executed_lines": [452, 454, 459, 460, 461, 462, 470, 471, 472, 473], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary": {"executed_lines": [487, 488, 489, 490, 491, 492, 493, 501, 506, 507, 508], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 484, "executed_branches": [], "missing_branches": []}, "test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices": {"executed_lines": [522, 523, 524, 525, 526, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[523, 524], [523, 525]], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries": {"executed_lines": [557, 558, 560, 567, 568, 569, 570, 571, 573, 574, 575, 576], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 553, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries.fail_snapshot_publish": {"executed_lines": [562, 563, 564, 565], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 560, "executed_branches": [[562, 563], [562, 565]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 23, 24, 25, 26, 27, 29, 36, 43, 63, 68, 80, 137, 161, 198, 228, 247, 289, 298, 319, 370, 411, 451, 484, 519, 553], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 23, 24, 25, 26, 27, 29, 36, 37, 38, 39, 40, 43, 51, 52, 63, 64, 65, 68, 69, 80, 83, 85, 86, 87, 88, 89, 90, 98, 106, 107, 108, 109, 113, 117, 118, 119, 120, 121, 122, 123, 124, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 182, 183, 184, 185, 186, 187, 195, 198, 199, 200, 208, 209, 212, 213, 214, 215, 216, 218, 219, 220, 221, 223, 224, 225, 228, 229, 230, 235, 236, 244, 247, 250, 252, 253, 254, 255, 263, 268, 269, 270, 271, 272, 273, 276, 277, 286, 289, 290, 291, 292, 293, 294, 295, 298, 301, 303, 308, 313, 314, 315, 316, 319, 320, 322, 323, 324, 325, 326, 331, 333, 334, 341, 346, 348, 353, 355, 356, 361, 363, 364, 365, 366, 367, 370, 373, 374, 375, 382, 383, 384, 385, 386, 404, 405, 406, 407, 408, 411, 414, 415, 416, 417, 418, 419, 420, 421, 423, 424, 429, 430, 436, 438, 439, 440, 441, 442, 443, 448, 451, 452, 454, 459, 460, 461, 462, 470, 471, 472, 473, 484, 487, 488, 489, 490, 491, 492, 493, 501, 506, 507, 508, 519, 522, 523, 524, 525, 526, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 553, 557, 558, 560, 562, 563, 564, 565, 567, 568, 569, 570, 571, 573, 574, 575, 576], "summary": {"covered_lines": 269, "num_statements": 269, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[118, 119], [118, 122], [123, 124], [123, 133], [149, 150], [149, 153], [153, -137], [153, 154], [164, 165], [164, 170], [276, 277], [276, 286], [363, -319], [363, 364], [384, 385], [384, 386], [404, -370], [404, 405], [523, 524], [523, 525], [562, 563], [562, 565]], "missing_branches": []}}}, "tests\\test_normalized_v3_failures.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 22, 23, 24, 25, 26, 27, 36, 37, 38, 39, 40, 43, 73, 79, 80, 81, 82, 83, 86, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 116, 120, 121, 122, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 146, 150, 151, 152, 153, 156, 159, 160, 161, 162, 163, 164, 167, 168, 169, 170, 171, 172, 173, 174, 178, 179, 180, 184, 185, 186, 190, 192, 193, 194, 195, 198, 201, 202, 207, 208, 214, 215, 216, 218, 219, 224, 225, 231, 232, 235, 237, 238, 239, 240, 246, 247, 248, 251, 255, 256, 257, 263, 264, 266, 267, 268, 269, 275, 276, 277, 278, 279, 280, 281, 287, 288, 291, 292, 293, 301, 303, 304, 312, 313, 316, 318, 319, 320, 321, 322, 332, 333, 334, 337, 404, 411, 412, 413, 418, 421, 428, 435, 436, 437, 444, 445, 446, 456, 460, 461, 462, 463, 464, 465, 466, 467, 468, 471, 472, 473, 474, 475, 476, 484, 485, 493, 494, 502, 503, 511, 519, 520, 523, 524, 529, 530, 531, 532, 538, 539, 541, 550, 551, 552, 553, 559, 562, 565, 566, 567, 568, 577, 580, 581, 582, 583, 584, 585, 590, 593, 594, 595, 596, 597, 598, 606, 607, 612, 615, 619, 620, 622, 623, 624, 626, 627, 628, 633, 634, 635, 638, 639, 640, 641, 642, 649, 650, 651, 652, 653, 654, 655, 656, 657, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 683, 684, 685, 686, 689, 693, 694, 695, 696, 697, 704, 705, 706, 707, 708, 709, 711, 718, 719, 724, 725, 726, 732, 733, 734, 735, 736, 737, 738, 739, 741, 742, 751, 752, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 774, 775, 776, 777, 778, 779, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 805, 818, 819, 820, 821, 822, 823, 829, 835, 836, 838, 844, 847, 851, 852, 853, 855, 856, 858, 859, 860, 863, 864, 865, 870, 871, 878, 879, 880, 881, 882, 884, 885, 886, 887, 890, 891, 892, 902, 903, 904, 905, 906, 907, 908, 909, 912, 916, 917, 918, 919, 927, 928, 930, 931, 933, 934, 935, 937, 938, 939, 940, 941, 949, 950, 952, 953, 954, 955, 956, 964, 967, 971, 972, 973, 974, 977, 980, 981, 982, 983, 988, 989, 991, 992, 993, 997, 998, 999, 1005, 1009, 1010, 1012, 1017, 1018, 1025, 1026, 1027, 1038, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1060, 1061, 1062, 1063, 1064, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1076, 1089, 1090, 1091, 1092, 1094], "summary": {"covered_lines": 467, "num_statements": 468, "percent_covered": 99.79423868312757, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.78632478632478, "percent_statements_covered_display": "99", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [143], "excluded_lines": [], "executed_branches": [[38, 39], [38, 40], [168, 169], [168, 173], [173, 174], [173, 179], [179, 180], [179, 185], [185, 186], [185, 192], [461, 462], [461, 463], [464, -444], [464, 465], [550, -523], [550, 551], [765, 766], [765, 768]], "missing_branches": [], "functions": {"_set_path": {"executed_lines": [37, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[38, 39], [38, 40]], "missing_branches": []}, "test_native_l2_validator_exercises_failure_semantics": {"executed_lines": [79, 80, 81, 82, 83], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73, "executed_branches": [], "missing_branches": []}, "test_input_spool_fallback_and_malformed_records_are_explicit": {"executed_lines": [90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "test_digest_and_staging_corruption_guards": {"executed_lines": [120, 121, 122, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [143], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "_rewrite_index_manifest": {"executed_lines": [150, 151, 152, 153, 156], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": []}, "test_claim_index_manifest_tampering_fails_closed": {"executed_lines": [161, 162, 163, 164, 167, 168, 169, 170, 171, 172, 173, 174, 178, 179, 180, 184, 185, 186, 190, 192, 193, 194, 195], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[168, 169], [168, 173], [173, 174], [173, 179], [179, 180], [179, 185], [185, 186], [185, 192]], "missing_branches": []}, "test_claim_index_schema_logical_shape_and_missing_manifest_paths": {"executed_lines": [201, 202, 207, 208, 214, 215, 216, 218, 219, 224, 225, 231, 232, 235, 237, 238, 239, 240, 246, 247, 248, 251, 255, 256, 257, 263, 264, 266, 267, 268, 269, 275, 276, 277, 278, 279, 280, 281, 287, 288], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_v3_claim_conflicts_include_historical_legacy_snapshots": {"executed_lines": [292, 293, 301, 303, 304, 312, 313, 316, 318, 319, 320, 321, 322], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "_replace_column": {"executed_lines": [333, 334], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_delta_constraints_fail_closed": {"executed_lines": [411, 412, 413, 418], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_action_quantity_contract": {"executed_lines": [435, 436, 437], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428, "executed_branches": [], "missing_branches": []}, "test_arrow_common_null_empty_precision_source_and_sequence_guards": {"executed_lines": [445, 446, 456, 460, 461, 462, 463, 464, 465, 466, 467, 468], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 444, "executed_branches": [[461, 462], [461, 463], [464, -444], [464, 465]], "missing_branches": []}, "test_arrow_input_reference_and_empty_batch_contracts": {"executed_lines": [472, 473, 474, 475, 476, 484, 485, 493, 494, 502, 503, 511, 519, 520], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts": {"executed_lines": [524, 529, 530, 531, 532, 538, 539, 541, 550, 551, 552, 553, 559], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523, "executed_branches": [[550, -523], [550, 551]], "missing_branches": []}, "test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing": {"executed_lines": [565, 566, 567, 568, 577], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 562, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_reject_cross_batch_partition_time_regression": {"executed_lines": [581, 582, 583, 584, 585, 590], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [], "missing_branches": []}, "test_mapping_unsorted_partition_is_sorted_without_changing_events": {"executed_lines": [594, 595, 596, 597, 598, 606, 607, 612], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 593, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path": {"executed_lines": [619, 620, 622, 626, 627, 628, 633, 634, 635], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 615, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path.observed_capacity": {"executed_lines": [623, 624], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_arrow_common_datetime_is_utc_and_partition_digest_is_strict": {"executed_lines": [639, 640, 641, 642, 649, 650, 651, 652, 653, 654, 655, 656, 657], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 638, "executed_branches": [], "missing_branches": []}, "test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts": {"executed_lines": [666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 683, 684, 685, 686], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "test_partition_buffers_reject_internal_schema_and_sort_corruption": {"executed_lines": [693, 694, 695, 696, 697, 704, 705, 706, 707, 708, 709, 711, 718, 719, 724, 725, 726, 732, 733, 734, 735, 736, 737, 738, 739, 741, 742, 751, 752, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 689, "executed_branches": [[765, 766], [765, 768]], "missing_branches": []}, "test_partition_scans_and_empty_claim_helpers_are_defensive": {"executed_lines": [775, 776, 777, 778, 779, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 805], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 774, "executed_branches": [], "missing_branches": []}, "test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish": {"executed_lines": [819, 820, 821, 822, 823, 829, 835, 836, 838, 844], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 818, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible": {"executed_lines": [851, 852, 853, 855, 858, 859, 860], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 847, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible.mismatched_load": {"executed_lines": [856], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 855, "executed_branches": [], "missing_branches": []}, "test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed": {"executed_lines": [864, 865, 870, 871, 878, 879, 880, 881, 882, 884, 885, 886, 887, 890, 891, 892, 902, 903, 904, 905, 906, 907, 908, 909], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 863, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults": {"executed_lines": [916, 917, 918, 919, 927, 928, 930, 931, 933, 937, 938, 939, 940, 941, 949, 950, 952, 953, 954, 955, 956, 964], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 912, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults.observed_capacity": {"executed_lines": [934, 935], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 933, "executed_branches": [], "missing_branches": []}, "test_strict_claim_count_fault_does_not_publish": {"executed_lines": [971, 972, 973, 974], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 967, "executed_branches": [], "missing_branches": []}, "test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards": {"executed_lines": [980, 981, 982, 983, 988, 989, 991, 992, 993, 997, 998, 999, 1005, 1009, 1010, 1012, 1017, 1018], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 977, "executed_branches": [], "missing_branches": []}, "test_duplicate_spool_ignores_non_string_ids_and_finds_repeats": {"executed_lines": [1026, 1027, 1038], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1025, "executed_branches": [], "missing_branches": []}, "test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream": {"executed_lines": [1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1060, 1061, 1062, 1063, 1064], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1041, "executed_branches": [], "missing_branches": []}, "test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams": {"executed_lines": [1068, 1069, 1070, 1071, 1072, 1073, 1074, 1076, 1089, 1090, 1091, 1092, 1094], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1067, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 22, 23, 24, 25, 26, 27, 36, 43, 73, 86, 116, 146, 159, 160, 198, 291, 332, 337, 404, 421, 428, 444, 471, 523, 562, 580, 593, 615, 638, 665, 689, 774, 818, 847, 863, 912, 967, 977, 1025, 1041, 1067], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 22, 23, 24, 25, 26, 27, 36, 37, 38, 39, 40, 43, 73, 79, 80, 81, 82, 83, 86, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 116, 120, 121, 122, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 146, 150, 151, 152, 153, 156, 159, 160, 161, 162, 163, 164, 167, 168, 169, 170, 171, 172, 173, 174, 178, 179, 180, 184, 185, 186, 190, 192, 193, 194, 195, 198, 201, 202, 207, 208, 214, 215, 216, 218, 219, 224, 225, 231, 232, 235, 237, 238, 239, 240, 246, 247, 248, 251, 255, 256, 257, 263, 264, 266, 267, 268, 269, 275, 276, 277, 278, 279, 280, 281, 287, 288, 291, 292, 293, 301, 303, 304, 312, 313, 316, 318, 319, 320, 321, 322, 332, 333, 334, 337, 404, 411, 412, 413, 418, 421, 428, 435, 436, 437, 444, 445, 446, 456, 460, 461, 462, 463, 464, 465, 466, 467, 468, 471, 472, 473, 474, 475, 476, 484, 485, 493, 494, 502, 503, 511, 519, 520, 523, 524, 529, 530, 531, 532, 538, 539, 541, 550, 551, 552, 553, 559, 562, 565, 566, 567, 568, 577, 580, 581, 582, 583, 584, 585, 590, 593, 594, 595, 596, 597, 598, 606, 607, 612, 615, 619, 620, 622, 623, 624, 626, 627, 628, 633, 634, 635, 638, 639, 640, 641, 642, 649, 650, 651, 652, 653, 654, 655, 656, 657, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 679, 680, 681, 683, 684, 685, 686, 689, 693, 694, 695, 696, 697, 704, 705, 706, 707, 708, 709, 711, 718, 719, 724, 725, 726, 732, 733, 734, 735, 736, 737, 738, 739, 741, 742, 751, 752, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 774, 775, 776, 777, 778, 779, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 805, 818, 819, 820, 821, 822, 823, 829, 835, 836, 838, 844, 847, 851, 852, 853, 855, 856, 858, 859, 860, 863, 864, 865, 870, 871, 878, 879, 880, 881, 882, 884, 885, 886, 887, 890, 891, 892, 902, 903, 904, 905, 906, 907, 908, 909, 912, 916, 917, 918, 919, 927, 928, 930, 931, 933, 934, 935, 937, 938, 939, 940, 941, 949, 950, 952, 953, 954, 955, 956, 964, 967, 971, 972, 973, 974, 977, 980, 981, 982, 983, 988, 989, 991, 992, 993, 997, 998, 999, 1005, 1009, 1010, 1012, 1017, 1018, 1025, 1026, 1027, 1038, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1060, 1061, 1062, 1063, 1064, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1076, 1089, 1090, 1091, 1092, 1094], "summary": {"covered_lines": 467, "num_statements": 468, "percent_covered": 99.79423868312757, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.78632478632478, "percent_statements_covered_display": "99", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [143], "excluded_lines": [], "start_line": 1, "executed_branches": [[38, 39], [38, 40], [168, 169], [168, 173], [173, 174], [173, 179], [179, 180], [179, 185], [185, 186], [185, 192], [461, 462], [461, 463], [464, -444], [464, 465], [550, -523], [550, 551], [765, 766], [765, 768]], "missing_branches": []}}}, "tests\\test_panel.py": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_merge_earnings_to_panel": {"executed_lines": [11, 18, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_merge_northbound_to_panel": {"executed_lines": [35, 42, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "test_add_industry_relative_strength": {"executed_lines": [54, 62, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 10, 34, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_alt.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_earnings_forecast_mock": {"executed_lines": [9, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_fetch_earnings_forecast_mock.mock_fetch": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock": {"executed_lines": [26, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock.mock_fetch": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock": {"executed_lines": [41, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock.mock_fetch": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 25, 40], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_prices.py": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_daily_prices_mock": {"executed_lines": [7, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "test_fetch_daily_prices_mock.mock_fetch": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_snapshots.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_snapshot_is_content_addressed_and_idempotent": {"executed_lines": [9, 10, 11, 12, 13, 14], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_snapshot_detects_mutation": {"executed_lines": [18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_storage.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_validate_price_frame_ok": {"executed_lines": [11, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_validate_price_frame_missing_column": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_cache_covers_range": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "test_save_manifest": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "test_should_refresh_cache": {"executed_lines": [50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 27, 33, 39, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_temporal.py": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_point_in_time_join_uses_availability_not_event_date": {"executed_lines": [13, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "test_audit_rejects_future_data": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "test_apply_symbol_lifecycle_keeps_delisted_history": {"executed_lines": [42, 48, 51, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 12, 35, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_universe.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_historical_universe_refuses_survivorship_fallback": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_historical_universe_allows_explicit_current_fallback": {"executed_lines": [22, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 21], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_v2_contract_branches.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": [], "functions": {"fp": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "test_market_event_base_and_simple_event_negative_contracts": {"executed_lines": [57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[77, 78], [77, 80]], "missing_branches": []}, "_bar": {"executed_lines": [111, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "test_bar_contract_rejects_each_structural_violation": {"executed_lines": [128, 129, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[138, -127], [138, 139]], "missing_branches": []}, "_snapshot": {"executed_lines": [144, 149, 150], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_book_snapshot_and_delta_negative_contracts": {"executed_lines": [154, 173, 174, 175, 177, 185, 194, 195, 196], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[173, 174], [173, 177], [194, -153], [194, 195]], "missing_branches": []}, "test_funding_corporate_action_status_and_payload_branches": {"executed_lines": [200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[200, 201], [200, 208], [229, 230], [229, 232]], "missing_branches": []}, "instrument_spec": {"executed_lines": [244, 267, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_reference_contract_negative_branches_and_serializers": {"executed_lines": [272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 42, 56, 110, 127, 143, 153, 199, 243, 271], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}}}, "tests\\test_v2_contracts.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": [], "functions": {"fp": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_fixed_point_is_exact_and_utc_is_strict": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_instrument_spec_matches_json_and_arrow_contracts": {"executed_lines": [91, 109, 110, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "test_market_clock_uses_explicit_trading_day": {"executed_lines": [117, 127, 128, 129, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "test_trade_and_quote_events_enforce_causal_time": {"executed_lines": [134, 140, 141, 148, 149, 150, 151, 152], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_l2_snapshot_and_delta_are_strictly_sequenced": {"executed_lines": [160, 165, 166, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [], "missing_branches": []}, "test_public_json_validation_enforces_event_semantics": {"executed_lines": [187, 193, 194, 195, 196, 197, 199, 200, 201, 202], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [], "missing_branches": []}, "test_public_stream_validation_rejects_duplicate_and_out_of_order_records": {"executed_lines": [206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "test_stream_validation_connects_l2_snapshot_to_first_delta": {"executed_lines": [242, 249, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_reference_json_validation_matches_dataclass_semantics": {"executed_lines": [266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "test_all_event_arrow_schemas_require_sequence_and_l2_lists_require_items": {"executed_lines": [286, 297, 298, 299, 300], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[286, 297], [286, 298]], "missing_branches": []}, "test_asset_specific_events_match_registered_schemas": {"executed_lines": [304, 310, 311, 318, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[318, -303], [318, 323]], "missing_branches": []}, "test_bitemporal_join_never_uses_future_knowledge": {"executed_lines": [327, 334, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_all_frozen_v2_golden_records_match_json_and_arrow_field_contracts": {"executed_lines": [350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [[367, -349], [367, 368]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 63, 77, 90, 116, 133, 159, 186, 205, 241, 265, 285, 303, 326, 349], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": []}}}, "tools\\benchmark_normalized_l2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 164, "num_statements": 215, "percent_covered": 73.51778656126483, "percent_covered_display": "74", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 76.27906976744185, "percent_statements_covered_display": "76", "num_branches": 38, "num_partial_branches": 10, "covered_branches": 22, "missing_branches": 16, "percent_branches_covered": 57.89473684210526, "percent_branches_covered_display": "58"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [187, -186], [187, 188], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]], "functions": {"synthetic_l2_events": {"executed_lines": [57, 59, 85, 86], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [58], "excluded_lines": [], "start_line": 55, "executed_branches": [[57, 59], [85, -55], [85, 86]], "missing_branches": [[57, 58]]}, "_repeat": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "synthetic_l2_batches": {"executed_lines": [111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [112, 114], "excluded_lines": [], "start_line": 109, "executed_branches": [[111, 113], [113, 115], [128, -109], [128, 129]], "missing_branches": [[111, 112], [113, 114]]}, "_PeakRssSampler.__init__": {"executed_lines": [180, 181, 182, 183, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler._sample": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "_PeakRssSampler.__enter__": {"executed_lines": [191, 192], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler.__exit__": {"executed_lines": [195, 196, 197], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "_profile_storage_stages": {"executed_lines": [202, 217, 222, 225, 229, 231, 232, 243, 244, 245, 247, 248], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[229, 231], [229, 244], [247, -200], [247, 248]], "missing_branches": []}, "_profile_storage_stages.measured": {"executed_lines": [235, 236, 237, 239, 240, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232, "executed_branches": [], "missing_branches": []}, "_git_identity": {"executed_lines": [252, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "_git_identity.git": {"executed_lines": [253, 260], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252, "executed_branches": [], "missing_branches": []}, "_tree_bytes": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_disk_roots": {"executed_lines": [274, 280, 281, 282, 284, 285, 286], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [283], "excluded_lines": [], "start_line": 273, "executed_branches": [[281, 282], [281, 286], [282, 284]], "missing_branches": [[282, 283]]}, "_disk_usage": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "_run_once_independent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [308, 309, 329, 330, 331, 335, 336, 337], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[330, 331], [330, 335]]}, "_run_once": {"executed_lines": [347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [369, 389], "excluded_lines": [], "start_line": 340, "executed_branches": [[368, 370], [388, 390]], "missing_branches": [[368, 369], [388, 389]]}, "run_benchmark": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 5, "percent_branches_covered": 37.5, "percent_branches_covered_display": "38"}, "missing_lines": [428, 430, 467, 468, 469, 470, 471], "excluded_lines": [], "start_line": 414, "executed_branches": [[427, 429], [429, 431], [466, 472]], "missing_branches": [[427, 428], [429, 430], [466, 467], [468, 469], [468, 470]]}, "_parser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": [[565, 566], [565, 576]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 105, 109, 178, 179, 186, 190, 194, 200, 201, 251, 269, 273, 289, 301, 340, 414, 534, 557, 596], "summary": {"covered_lines": 57, "num_statements": 58, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.27586206896552, "percent_statements_covered_display": "98", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [597], "excluded_lines": [], "start_line": 1, "executed_branches": [[596, -1]], "missing_branches": [[596, 597]]}}, "classes": {"_PeakRssSampler": {"executed_lines": [180, 181, 182, 183, 184, 187, 188, 191, 192, 195, 196, 197], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 186, 190, 194, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 152, "num_statements": 203, "percent_covered": 71.96652719665272, "percent_covered_display": "72", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 74.8768472906404, "percent_statements_covered_display": "75", "num_branches": 36, "num_partial_branches": 10, "covered_branches": 20, "missing_branches": 16, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "start_line": 1, "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]]}}}}, "totals": {"covered_lines": 10253, "num_statements": 10916, "percent_covered": 92.520042353653, "percent_covered_display": "93", "missing_lines": 663, "excluded_lines": 34, "percent_statements_covered": 93.9263466471235, "percent_statements_covered_display": "94", "num_branches": 2306, "num_partial_branches": 206, "covered_branches": 1980, "missing_branches": 326, "percent_branches_covered": 85.86296617519514, "percent_branches_covered_display": "86"}} \ No newline at end of file diff --git a/validation/m7-capture/pytest-junit.xml b/validation/m7-capture/pytest-junit.xml new file mode 100644 index 0000000..41e8aa6 --- /dev/null +++ b/validation/m7-capture/pytest-junit.xml @@ -0,0 +1 @@ +H:\Documents\ChatGPT\temp\puresaber-quant-platform\.worktrees\quant-data-kit-m7\tests\test_m2_audit_regressions.py:209: POSIX symbolic-link regression \ No newline at end of file diff --git a/validation/m7-capture/summary.md b/validation/m7-capture/summary.md new file mode 100644 index 0000000..cdb771c --- /dev/null +++ b/validation/m7-capture/summary.md @@ -0,0 +1,82 @@ +# M7 public Crypto L2 capture verification + +## Scope and boundary + +- Source baseline:`bb796ad49f5c69e9b31d1813d9ca12641755f876`. +- Branch:`codex/cross-asset-v2-m7-data-performance`. +- Pull request:`PureSaber/quant-data-kit#6`; it must remain open. +- Public market data only: no API key, account endpoint, order or cleanup operation was used. +- The eight-stream deterministic integration fixture covers Binance/OKX BTC/ETH Spot and USDT + perpetual L2 from Raw exact bytes through independent archive/restore verification into the + existing Normalized contract. +- This evidence does not represent30 continuous capture days and does not establish + `market-data-certified`status. + +## Local quality gates + +Environment: isolated`.venv-m7-verify`, Python3.12.5, locked dependencies from +`requirements.lock`, editable package0.7.0. + +| Gate | Result | +|---|---| +| Locked install | PASS;`websockets==15.0.1`installed from the regenerated lock | +|`pip check`before and after editable install | PASS; no broken requirements | +| Runtime/build metadata | PASS; both report`0.7.0` | +|`ruff check src tests tools` | PASS | +|`ruff format --check src tests tools` | PASS | +| Full pytest | PASS;299 passed、1 skipped、0 failed | +| Skip review | Existing Windows skip only:`POSIX symbolic-link regression`; no`capture_v2`test skipped | +| Full source pure branch coverage | PASS;1800/2092=86.04%, required>=80% | + +New capture core pure branch coverage: + +| Module | Covered/total | Result | +|---|---:|---| +|`capture_v2/models.py` |72/74=97.30% | PASS | +|`capture_v2/storage.py` |71/78=91.03% | PASS | +|`capture_v2/synchronizers.py` |90/90=100.00% | PASS | +|`capture_v2/epoch.py` |26/28=92.86% | PASS | +|`capture_v2/transport.py` |12/12=100.00% | PASS | +|`capture_v2/collector.py` |47/52=90.38% | PASS | +|`capture_v2/cli.py` |37/38=97.37% | PASS | + +Evidence: + +-`validation/m7-capture/coverage.json`, SHA-256 + `f10c7056c07202e9df80387fc5f98968e6d2db446a3d255e5dbc8e7aea93005b`. +-`validation/m7-capture/pytest-junit.xml`, SHA-256 + `12d46df3d93b2c577bfb23724f77cdb0ce74e182ea52a95f01c2c23fe4fe7a97`. + +## Machine preflight and public TLS probe + +At execution time, Windows reported F and H as different volume IDs. The explicit local +configuration used F for hot/restore and H for archive. The archive reserve was150GiB. Both safe +preflight and an explicitly confirmed`run`attempt returned`PAUSED_PREFLIGHT_FAILED`before network +startup because projected archive free bytes were74,011,439,104, below the current20% archive +floor199,710,735,564. All eight stream reports recorded: + +-`final_state=PAUSED`; +-`websocket_messages=0`; +-`archive_preflight_receipt=null`; +-`long_running_capture_started=false`; +-`continuous_days=0`and`market_data_certified=false`. + +The immutable run reports are retained outside the repository at: + +-`F:\puresaber-m7-capture-hot\capture\run-reports\capture-61310df5526f4abb8828c9e08313a325.json`; +-`F:\puresaber-m7-capture-hot\capture\run-reports\capture-39b3ae579fa1400ab9a20863bffff15a.json`. + +A transport-only public TLS handshake probe was attempted without subscribing or receiving data. +Both Binance and OKX were reset by the current host network with`ConnectionResetError (WinError64)`. +This is retained as a visible environment limitation, not reported as a successful network test. +No collector probe was started and the archive gate was not bypassed. + +## Remaining certification work + +- GitHub CI must run the locked matrix on Python3.10、3.11 and3.12 for the final pushed commit. +- A future operator-provisioned archive volume must pass the physical identity, capacity and + restore-hash preflight before any bounded collector probe. +- Real Binance/OKX TLS access remains unverified on this host because both public handshakes were + reset by the network. +- 30-day continuous retained data, cross-source data-quality review and real market-data + certification remain explicitly incomplete. From 6078f6f6df7b29ca91401df58f3bb0a11308975c Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sat, 29 Aug 2026 22:51:24 +0800 Subject: [PATCH 05/16] fix: harden M7 capture durability and coordination --- docs/m7-crypto-l2-capture.md | 40 +- src/quant_data_kit/_version.py | 2 +- src/quant_data_kit/capture_v2/__init__.py | 8 + src/quant_data_kit/capture_v2/cli.py | 23 +- src/quant_data_kit/capture_v2/collector.py | 489 +++++-- src/quant_data_kit/capture_v2/epoch.py | 252 +++- src/quant_data_kit/capture_v2/models.py | 154 +- src/quant_data_kit/capture_v2/storage.py | 464 +++++- ...test_capture_v2_collector_cli_transport.py | 6 +- tests/test_capture_v2_models_storage.py | 40 +- tests/test_capture_v2_remediation.py | 1256 +++++++++++++++++ tests/test_capture_v2_synchronizers_epoch.py | 3 +- tests/test_m2_integration.py | 2 +- tools/benchmark_capture_v2.py | 391 +++++ 14 files changed, 2840 insertions(+), 290 deletions(-) create mode 100644 tests/test_capture_v2_remediation.py create mode 100644 tools/benchmark_capture_v2.py diff --git a/docs/m7-crypto-l2-capture.md b/docs/m7-crypto-l2-capture.md index 76d6c04..f16dbbe 100644 --- a/docs/m7-crypto-l2-capture.md +++ b/docs/m7-crypto-l2-capture.md @@ -15,8 +15,9 @@ machine-certified scope is exactly these eight streams: The run report always emits sorted providers`["binance","okx"]`and the sorted capabilities `btc-spot-l2`、`btc-usdt-perpetual-l2`、`eth-spot-l2`and -`eth-usdt-perpetual-l2`. Configuration may replace endpoint details, but it must still describe -the same frozen eight-stream certification scope. +`eth-usdt-perpetual-l2`. Configuration may list the streams explicitly, but M7 rejects any change +to provider、market、native symbol、stable instrument、stream ID、venue、channel or the parsed +official WSS/HTTPS host、port、path and query identity. This implementation is not evidence of30 continuous capture days and is not `market-data-certified`. A bounded probe proves only that preflight, public transport and admission @@ -25,9 +26,11 @@ work for that invocation. ## State and synchronization rules Every stream has the explicit state sequence`CONNECTING→BUFFERING→SNAPSHOT_SYNC→LIVE`and can -terminate in`RESYNC`or`PAUSED`. Every transition, failure, retry, heartbeat, stale update and normal -absent-level deletion becomes an immutable audit Raw frame. Illegal transitions raise and emit an -alert instead of changing state silently. +terminate in`RESYNC`or`PAUSED`. State transitions、failures and retries are committed first to a +dedicated content-addressed durable audit chain; only a successful reload/hash check allows the +in-memory state to change. Illegal transitions are durably audited and then rejected. High-rate +book observations remain counted, with the first and each1024th occurrence durably summarized so +that operational audit does not become per-market-message fsync I/O. Binance messages are buffered before requesting the HTTPS snapshot. The bridge discards stale updates, requires the first admitted update to satisfy`U<=lastUpdateId<=u`, then enforces the USD-M @@ -50,20 +53,26 @@ an existing immutable path cannot be overwritten with different bytes. Admitted snapshots and deltas are spooled in bounded Normalized epochs. Publication uses the existing`write_normalized_events`path, PIT checks, schemas, quarantine rules and Raw references. -Gaps or connection failures close the current epoch visibly before resynchronization. +Gaps or connection failures abort the current epoch visibly before resynchronization. Finalization +retains the journal until both Normalized publication and an immutable receipt succeed; failed +publish/receipt attempts produce content-addressed failure records and remain retryable. ## Capacity and independent archive controls `hot_root`、`archive_root`and`restore_root`must be explicit absolute existing directories. The hot and archive roots are resolved through an injectable physical-volume probe; different path strings -on the same physical device fail preflight. Collection checks capacity before network startup and -before every write. It pauses if projected hot data exceeds150GiB or if free space falls below +on the same physical device fail preflight. All three roots and each final parent reject symbolic +links、Windows junctions/reparse points and resolved escapes. Collection takes an exact startup +baseline, reserves every projected write under a thread-safe incremental counter, and repeats real +tree/capacity probes at bounded message、byte or monotonic-time intervals. It pauses if projected +hot data exceeds150GiB or if free space falls below `max(volume capacity*20%,100GiB)`. Archive reserve failures also pause collection. No capture path deletes or evicts data automatically. Preflight writes an immutable archive probe, copies it to the archive volume, restores it under the explicit restore root and recomputes SHA-256. Every Raw segment then repeats copy, manifest and -payload hashing, temporary restore, model re-read and hash comparison. Only a successful receipt +payload hashing, temporary restore, model re-read and hash comparison. The destination physical +identity is rechecked before and after immutable create-if-absent publication. Only a successful receipt sets`archive_restore_verified=true`and`eligible_for_cleanup=true`; it always records `cleanup_performed=false`. Cleanup is outside this collector and requires a separate explicit operator action. @@ -89,6 +98,15 @@ Example configuration, with operator-selected absolute paths: "base_delay_seconds": 0.5, "maximum_delay_seconds": 8.0, "jitter_fraction": 0.2 + }, + "durability": { + "capacity_probe_messages": 256, + "capacity_probe_bytes": 4194304, + "capacity_probe_seconds": 1.0, + "normalized_flush_records": 256, + "normalized_flush_bytes": 1048576, + "normalized_flush_seconds": 1.0, + "probe_timeout_seconds": 30.0 } } ``` @@ -100,7 +118,9 @@ qdk-capture capture.json qdk-capture capture.json --mode preflight ``` -A bounded public probe is explicit and still runs archive preflight first: +A bounded public probe is explicit and still runs archive preflight first. Its message budget covers +the whole post-connect synchronization phase, including OKX control frames; both timeout and message +budget exhaustion are audited failures: ```bash qdk-capture capture.json --mode probe --max-messages 3 diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py index 541c92e..347256b 100644 --- a/src/quant_data_kit/_version.py +++ b/src/quant_data_kit/_version.py @@ -1,3 +1,3 @@ """Single authoritative package version used by builds and runtime imports.""" -__version__ = "0.7.0" +__version__ = "0.7.1" diff --git a/src/quant_data_kit/capture_v2/__init__.py b/src/quant_data_kit/capture_v2/__init__.py index 815bc5d..11f5177 100644 --- a/src/quant_data_kit/capture_v2/__init__.py +++ b/src/quant_data_kit/capture_v2/__init__.py @@ -10,7 +10,10 @@ M7_CAPABILITIES, M7_PROVIDERS, AuditEvent, + AuditPersistenceError, + AuditReference, CaptureConfig, + CaptureDurabilityPolicy, CaptureState, CaptureStateMachine, Clock, @@ -35,6 +38,7 @@ CapturePausedError, CaptureStorageGuard, DiskCapacity, + DurableAuditStore, LocalArchiveController, RawSegment, RawSegmentWriter, @@ -58,8 +62,11 @@ "M7_PROVIDERS", "ArchivePreflightReceipt", "AuditEvent", + "AuditPersistenceError", + "AuditReference", "BinanceBookSynchronizer", "CaptureConfig", + "CaptureDurabilityPolicy", "CapturePausedError", "CaptureRunReport", "CaptureState", @@ -69,6 +76,7 @@ "Clock", "CryptoL2CaptureCoordinator", "DiskCapacity", + "DurableAuditStore", "LocalArchiveController", "MarketKind", "MonotonicReceivedClock", diff --git a/src/quant_data_kit/capture_v2/cli.py b/src/quant_data_kit/capture_v2/cli.py index d1b2742..6a143c3 100644 --- a/src/quant_data_kit/capture_v2/cli.py +++ b/src/quant_data_kit/capture_v2/cli.py @@ -12,6 +12,7 @@ from quant_data_kit.capture_v2.collector import CryptoL2CaptureCoordinator from quant_data_kit.capture_v2.models import ( CaptureConfig, + CaptureDurabilityPolicy, MarketKind, Provider, RetryPolicy, @@ -29,6 +30,7 @@ "streams", "rotation", "retry", + "durability", "archive_reserve_bytes", } _STREAM_KEYS = { @@ -79,8 +81,11 @@ def load_capture_config(path: Path) -> CaptureConfig: streams = _streams(payload.get("streams")) rotation_payload = payload.get("rotation", {}) retry_payload = payload.get("retry", {}) - if not isinstance(rotation_payload, dict) or not isinstance(retry_payload, dict): - raise ValidationError("rotation and retry must be JSON objects") + durability_payload = payload.get("durability", {}) + if not all( + isinstance(item, dict) for item in (rotation_payload, retry_payload, durability_payload) + ): + raise ValidationError("rotation and retry and durability must be JSON objects") try: return CaptureConfig( hot_root=Path(str(payload["hot_root"])), @@ -90,6 +95,7 @@ def load_capture_config(path: Path) -> CaptureConfig: streams=streams, rotation=SegmentRotation(**rotation_payload), retry=RetryPolicy(**retry_payload), + durability=CaptureDurabilityPolicy(**durability_payload), archive_reserve_bytes=int(payload.get("archive_reserve_bytes", 150 * 1024**3)), ) except (TypeError, ValueError) as exc: @@ -159,11 +165,22 @@ def main_capture(argv: list[str] | None = None) -> int: if not args.confirm_long_running: raise ValidationError("run mode requires explicit --confirm-long-running") report = asyncio.run(coordinator.run(maximum_websocket_messages=None)) + except KeyboardInterrupt: + print(json.dumps({"status": "CAPTURE_CANCELLED", "error": "KeyboardInterrupt"})) + return 130 except (ValidationError, OSError) as exc: print(json.dumps({"status": "PAUSED", "error": str(exc)}, ensure_ascii=False)) return 2 print(json.dumps(asdict(report), indent=2, ensure_ascii=False)) - return 0 if "FAILED" not in report.status else 2 + return ( + 0 + if report.status + in { + "PREFLIGHT_PASSED_NETWORK_NOT_STARTED", + "BOUNDED_PROBE_COMPLETE", + } + else 2 + ) if __name__ == "__main__": diff --git a/src/quant_data_kit/capture_v2/collector.py b/src/quant_data_kit/capture_v2/collector.py index 986972b..2657721 100644 --- a/src/quant_data_kit/capture_v2/collector.py +++ b/src/quant_data_kit/capture_v2/collector.py @@ -5,7 +5,7 @@ import asyncio import hashlib import json -import os +import time import uuid from collections.abc import Callable from dataclasses import asdict, dataclass @@ -35,9 +35,11 @@ ArchivePreflightReceipt, CapturePausedError, CaptureStorageGuard, + DurableAuditStore, LocalArchiveController, RawSegmentWriter, SegmentArchiveReceipt, + _atomic_immutable_write, ) from quant_data_kit.capture_v2.synchronizers import ( BinanceBookSynchronizer, @@ -64,6 +66,7 @@ class CaptureStreamReport: stream_id: str provider: str capability: str + outcome: str final_state: str websocket_messages: int raw_segments: int @@ -79,8 +82,14 @@ class CaptureStreamReport: last_received_at: str | None audit_events: int audit_failures: int + audit_chain_sha256: str | None + audit_references: tuple[str, ...] errors: tuple[str, ...] epoch_receipts: tuple[str, ...] + epoch_aborts: tuple[str, ...] + archive_receipts: tuple[str, ...] + pending_raw_messages: int + pending_raw_segments: int @dataclass(frozen=True) @@ -90,10 +99,12 @@ class CaptureRunReport: started_at: str ended_at: str status: str + collector_commit: str providers: tuple[str, ...] capabilities: tuple[str, ...] streams: tuple[CaptureStreamReport, ...] archive_preflight_receipt: str | None + audit_reference_sha256: str continuous_days: int market_data_certified: bool long_running_capture_started: bool @@ -152,6 +163,7 @@ def __init__( alert_sink: Callable[[str], None], policy: StoragePolicy = _DEFAULT_POLICY, receive_timeout_seconds: float = 30.0, + monotonic: Callable[[], float] = time.monotonic, ) -> None: self.config = config self.stream = stream @@ -165,6 +177,7 @@ def __init__( self.alert_sink = alert_sink self.policy = policy self.receive_timeout_seconds = receive_timeout_seconds + self.monotonic = monotonic self.connection_id = f"conn-{uuid.uuid4().hex}" self._audit_failures = 0 self.segment_writer = RawSegmentWriter( @@ -176,93 +189,131 @@ def __init__( storage_guard=storage_guard, policy=policy, ) + self.audit_store = DurableAuditStore( + config.hot_root, + stream_id=stream.stream_id, + connection_id=self.connection_id, + collector_commit=config.collector_commit, + storage_guard=storage_guard, + ) self.state = CaptureStateMachine( stream, connection_id=self.connection_id, collector_commit=config.collector_commit, clock=clock, - audit_sink=self.segment_writer.append, + audit_sink=self.audit_store.append, alert_sink=self._alert, ) self._received_clock = MonotonicReceivedClock(clock) self._journal: NormalizedEpochJournal | None = None self._epoch_receipts: list[NormalizedEpochReceipt] = [] self._archive_receipts: list[SegmentArchiveReceipt] = [] + self._epoch_aborts: list[str] = [] self._errors: list[str] = [] self._websocket_messages = 0 self._first_received_at: datetime | None = None self._last_received_at: datetime | None = None self._resyncs = 0 self._observations: dict[str, int] = {} + self._outcome = "RUNNING" + self._probe_message_limit: int | None = None + self._probe_deadline: float | None = None + self._last_report: CaptureStreamReport | None = None async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamReport: failed_attempts = 0 - while self.state.state is not CaptureState.PAUSED: - if self.state.state is CaptureState.RESYNC: - self.state.transition(CaptureState.CONNECTING, "bounded_reconnect") - self._drain_segments() - try: + try: + while self.state.state is not CaptureState.PAUSED: + if self.state.state is CaptureState.RESYNC: + self.state.transition(CaptureState.CONNECTING, "bounded_reconnect") + self._drain_segments() await self._run_connection(maximum_websocket_messages) if maximum_websocket_messages is not None: - self.state.transition(CaptureState.PAUSED, "bounded_probe_complete") - self.segment_writer.flush() - self._drain_segments() - self._finalize_epoch() + self._outcome = "BOUNDED_COMPLETE" + self._terminal_cleanup("bounded_probe_complete") break - failed_attempts = 0 - except asyncio.CancelledError: - self._pause("capture_cancelled") - raise - except Exception as exc: # noqa: BLE001 - all feed failures require audit/retry + raise ValidationError("long-running connection returned without a stop cause") + except asyncio.CancelledError: + self._handle_cancellation() + raise + except Exception as exc: # noqa: BLE001 - feed failures share one retry boundary + while True: failed_attempts += 1 self._errors.append(f"{type(exc).__name__}: {exc}") - self.state.audit( - "capture_failure", - str(exc), - {"attempt": failed_attempts, "exception": type(exc).__name__}, - ) - if self.state.state is CaptureState.PAUSED: - self._alert( - f"CAPTURE_PAUSED:{self.stream.stream_id}:post_pause_failure:" - f"{type(exc).__name__}:{exc}" + try: + self.state.audit( + "capture_failure", + str(exc), + {"attempt": failed_attempts, "exception": type(exc).__name__}, ) + except Exception as audit_exc: # noqa: BLE001 - state remains fail-closed + self._errors.append(f"{type(audit_exc).__name__}: {audit_exc}") + self._outcome = "FAILED" + self._terminal_cleanup("audit_persistence_failure", abort_reason=str(exc)) break - if self.state.state not in {CaptureState.CONNECTING, CaptureState.RESYNC}: - self.state.transition( - CaptureState.RESYNC, - "connection_or_sequence_failure", - {"exception": type(exc).__name__, "message": str(exc)}, - ) - self._resyncs += 1 - self.segment_writer.flush() try: + if self.state.state not in {CaptureState.CONNECTING, CaptureState.RESYNC}: + self.state.transition( + CaptureState.RESYNC, + "connection_or_sequence_failure", + {"exception": type(exc).__name__, "message": str(exc)}, + ) + self._resyncs += 1 + self.segment_writer.flush() self._drain_segments() - except Exception as archive_exc: # noqa: BLE001 - archive failures always pause - self._errors.append(f"{type(archive_exc).__name__}: {archive_exc}") - self._pause("archive_failure", archive_exc) + self._finalize_epoch(abort_reason=str(exc)) + except Exception as cleanup_exc: # noqa: BLE001 - cleanup failures always pause + self._errors.append(f"{type(cleanup_exc).__name__}: {cleanup_exc}") + self._outcome = "FAILED" + self._terminal_cleanup("failure_cleanup_failed", abort_reason=str(exc)) break - self._finalize_epoch(abort_reason=str(exc)) if failed_attempts >= self.config.retry.max_attempts: - self._pause("retry_budget_exhausted", exc) + self._outcome = "FAILED" + self._terminal_cleanup("retry_budget_exhausted", abort_reason=str(exc)) break delay = self.config.retry.delay(failed_attempts, self.jitter) self.state.audit( "retry_scheduled", "bounded_exponential_backoff", {"seconds": delay} ) - await self.clock.sleep(delay) - if self.segment_writer.pending_messages: - self.segment_writer.flush() - try: - self._drain_segments() - except Exception as exc: # noqa: BLE001 - terminal archive failure remains visible - self._errors.append(f"{type(exc).__name__}: {exc}") - self._alert( - f"TERMINAL_ARCHIVE_FAILURE:{self.stream.stream_id}:{type(exc).__name__}:{exc}" - ) - self._finalize_epoch() - return self._report() + try: + await self.clock.sleep(delay) + except asyncio.CancelledError: + self._handle_cancellation() + raise + try: + if self.state.state is CaptureState.RESYNC: + self.state.transition(CaptureState.CONNECTING, "bounded_reconnect") + self._drain_segments() + await self._run_connection(maximum_websocket_messages) + if maximum_websocket_messages is not None: + self._outcome = "BOUNDED_COMPLETE" + self._terminal_cleanup("bounded_probe_complete") + break + except asyncio.CancelledError: + self._handle_cancellation() + raise + except Exception as retry_exc: # noqa: BLE001 - retry shares the same boundary + exc = retry_exc + continue + raise ValidationError("long-running connection returned without a stop cause") + self._last_report = self._report() + return self._last_report + + def _handle_cancellation(self) -> None: + self._outcome = "CANCELLED" + message = "CancelledError: capture task cancelled" + if message not in self._errors: + self._errors.append(message) + self._terminal_cleanup("capture_cancelled", abort_reason="capture_cancelled") + self._last_report = self._report() async def _run_connection(self, maximum_websocket_messages: int | None) -> None: + self._probe_message_limit = maximum_websocket_messages + self._probe_deadline = ( + self.monotonic() + self.config.durability.probe_timeout_seconds + if maximum_websocket_messages is not None + else None + ) connection = await self.websockets.connect( self.stream.websocket_url, timeout_seconds=self.receive_timeout_seconds, @@ -337,9 +388,27 @@ async def _run_okx( self._drain_segments() async def _receive_frame(self, connection: WebSocketConnection) -> RawFrame: - payload = await connection.receive(timeout_seconds=self.receive_timeout_seconds) + if ( + self._probe_message_limit is not None + and self._websocket_messages >= self._probe_message_limit + ): + raise ResyncRequired( + "bounded probe websocket message budget exhausted before synchronization completed" + ) + timeout = self.receive_timeout_seconds + if self._probe_deadline is not None: + remaining = self._probe_deadline - self.monotonic() + if remaining <= 0: + raise ResyncRequired("bounded probe synchronization timeout exhausted") + timeout = min(timeout, remaining) + payload = await connection.receive(timeout_seconds=timeout) observed, received = self._received_clock.now() - event_time, sequences = _frame_metadata(self.stream.provider, payload) + metadata_error: ResyncRequired | None = None + try: + event_time, sequences = _frame_metadata(self.stream.provider, payload) + except ResyncRequired as exc: + event_time, sequences = None, {} + metadata_error = exc frame = RawFrame( frame_kind="market_data", provider=self.stream.provider.value, @@ -359,6 +428,8 @@ async def _receive_frame(self, connection: WebSocketConnection) -> RawFrame: self._websocket_messages += 1 self._first_received_at = self._first_received_at or received self._last_received_at = received + if metadata_error is not None: + raise metadata_error return frame def _https_frame( @@ -372,8 +443,8 @@ def _https_frame( try: value = json.loads(payload) sequences = {"lastUpdateId": int(value["lastUpdateId"])} - except (UnicodeError, json.JSONDecodeError, KeyError, TypeError, ValueError) as exc: - raise ResyncRequired("Binance HTTPS snapshot is malformed") from exc + except (UnicodeError, json.JSONDecodeError, KeyError, TypeError, ValueError): + sequences = {} return RawFrame( frame_kind="rest_snapshot", provider=self.stream.provider.value, @@ -395,8 +466,14 @@ def _apply_outcome(self, outcome: NormalizationOutcome) -> None: raise ValidationError("Normalized epoch journal was not initialized") self._journal.append(outcome.records) for observation in outcome.observations: - self._observations[observation.event] = self._observations.get(observation.event, 0) + 1 - self.state.audit(observation.event, observation.reason, observation.details) + count = self._observations.get(observation.event, 0) + 1 + self._observations[observation.event] = count + if count == 1 or count % 1024 == 0: + self.state.audit( + observation.event, + observation.reason, + {**dict(observation.details), "occurrence_count": count}, + ) def _new_epoch(self) -> None: if self._journal is not None: @@ -410,26 +487,59 @@ def _new_epoch(self) -> None: venue=self.stream.venue, storage_guard=self.storage_guard, policy=self.policy, + flush_records=self.config.durability.normalized_flush_records, + flush_bytes=self.config.durability.normalized_flush_bytes, + flush_seconds=self.config.durability.normalized_flush_seconds, + monotonic=self.monotonic, ) def _drain_segments(self) -> None: - for segment in self.segment_writer.drain_completed(): + for segment in self.segment_writer.peek_completed(): receipt = self.archive.archive_segment(segment) if not receipt.archive_restore_verified or not receipt.eligible_for_cleanup: raise CapturePausedError("CAPTURE_PAUSED: segment archive was not restore-verified") - self._archive_receipts.append(receipt) if self._journal is not None: self._journal.record_segment(segment) + self._archive_receipts.append(receipt) + self.segment_writer.acknowledge_completed(segment) def _finalize_epoch(self, abort_reason: str | None = None) -> None: if self._journal is None: return - journal, self._journal = self._journal, None - if abort_reason and not journal.records: - journal.abort_visible(abort_reason) + journal = self._journal + if abort_reason is not None: + path = journal.abort_visible(abort_reason) + self._epoch_aborts.append(str(path)) + self._journal = None return receipt = journal.finalize(created_at=self.clock.now()) self._epoch_receipts.append(receipt) + self._journal = None + + def _terminal_cleanup(self, reason: str, *, abort_reason: str | None = None) -> None: + cleanup_errors: list[Exception] = [] + try: + self._pause(reason) + except Exception as exc: # noqa: BLE001 - later durability steps must still run + cleanup_errors.append(exc) + try: + self.segment_writer.flush() + self._drain_segments() + except Exception as exc: # noqa: BLE001 - retain Raw references for operator recovery + cleanup_errors.append(exc) + try: + self._finalize_epoch(abort_reason=abort_reason) + except Exception as exc: # noqa: BLE001 - retain journal on finalize failure + cleanup_errors.append(exc) + for exc in cleanup_errors: + message = f"{type(exc).__name__}: {exc}" + if message not in self._errors: + self._errors.append(message) + self._alert( + f"TERMINAL_DURABILITY_FAILURE:{self.stream.stream_id}:{type(exc).__name__}:{exc}" + ) + if cleanup_errors: + self._outcome = "FAILED" def _pause(self, reason: str, exc: Exception | None = None) -> None: if self.state.state is CaptureState.PAUSED: @@ -448,10 +558,13 @@ def _alert(self, message: str) -> None: def _report(self) -> CaptureStreamReport: accepted = sum(item.accepted_rows for item in self._epoch_receipts) quarantined = sum(item.quarantined_rows for item in self._epoch_receipts) + references = self.state.references + audit_chain = references[-1].audit_sha256 if references else None return CaptureStreamReport( stream_id=self.stream.stream_id, provider=self.stream.provider.value, capability=self.stream.capability, + outcome=self._outcome, final_state=self.state.state.value, websocket_messages=self._websocket_messages, raw_segments=self.segment_writer.segment_count, @@ -475,8 +588,14 @@ def _report(self) -> CaptureStreamReport: ), audit_events=len(self.state.events), audit_failures=self._audit_failures, + audit_chain_sha256=audit_chain, + audit_references=tuple(item.audit_path for item in references), errors=tuple(self._errors), epoch_receipts=tuple(item.receipt_path for item in self._epoch_receipts), + epoch_aborts=tuple(self._epoch_aborts), + archive_receipts=tuple(item.receipt_path for item in self._archive_receipts), + pending_raw_messages=self.segment_writer.pending_messages, + pending_raw_segments=len(self.segment_writer.peek_completed()), ) @@ -496,16 +615,22 @@ def __init__( jitter: Callable[[], float] = random_jitter, alert_sink: Callable[[str], None] | None = None, policy: StoragePolicy = _DEFAULT_POLICY, + monotonic: Callable[[], float] = time.monotonic, ) -> None: assert_m7_scope(config.streams) self.config = config self.clock = clock or SystemClock() self.alert_sink = alert_sink or (lambda _message: None) + self.monotonic = monotonic self.storage_guard = storage_guard or CaptureStorageGuard( config.hot_root, config.archive_root, policy=policy, archive_reserve_bytes=config.archive_reserve_bytes, + monotonic=monotonic, + probe_messages=config.durability.capacity_probe_messages, + probe_bytes=config.durability.capacity_probe_bytes, + probe_seconds=config.durability.capacity_probe_seconds, ) self.archive = archive or LocalArchiveController( config.hot_root, @@ -536,29 +661,7 @@ def preflight_only(self) -> CaptureRunReport: errors = (f"{type(exc).__name__}: {exc}",) self.alert_sink(f"CAPTURE_PAUSED:PREFLIGHT_FAILED:{type(exc).__name__}:{exc}") reports = tuple( - CaptureStreamReport( - stream_id=stream.stream_id, - provider=stream.provider.value, - capability=stream.capability, - final_state=CaptureState.PAUSED.value, - websocket_messages=0, - raw_segments=0, - archived_segments=0, - normalized_epochs=0, - accepted_rows=0, - quarantined_rows=0, - resyncs=0, - duplicate_or_old_updates=0, - absent_level_deletes=0, - heartbeats=0, - first_received_at=None, - last_received_at=None, - audit_events=1, - audit_failures=0, - errors=errors, - epoch_receipts=(), - ) - for stream in self.config.streams + self._empty_stream_report(stream, errors=errors) for stream in self.config.streams ) return self._write_report( run_id, @@ -577,28 +680,7 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo except Exception as exc: # noqa: BLE001 - preflight must convert every failure to PAUSED self.alert_sink(f"CAPTURE_PAUSED:PREFLIGHT_FAILED:{type(exc).__name__}:{exc}") reports = tuple( - CaptureStreamReport( - stream_id=stream.stream_id, - provider=stream.provider.value, - capability=stream.capability, - final_state=CaptureState.PAUSED.value, - websocket_messages=0, - raw_segments=0, - archived_segments=0, - normalized_epochs=0, - accepted_rows=0, - quarantined_rows=0, - resyncs=0, - duplicate_or_old_updates=0, - absent_level_deletes=0, - heartbeats=0, - first_received_at=None, - last_received_at=None, - audit_events=1, - audit_failures=0, - errors=(f"{type(exc).__name__}: {exc}",), - epoch_receipts=(), - ) + self._empty_stream_report(stream, errors=(f"{type(exc).__name__}: {exc}",)) for stream in self.config.streams ) return self._write_report( @@ -609,42 +691,161 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo status="PAUSED_PREFLIGHT_FAILED", long_running_capture_started=False, ) - runners = [ - CaptureStreamRunner( - self.config, - stream, - storage_guard=self.storage_guard, - archive=self.archive, - mappings=self.mappings, - http=self.http, - websockets=self.websockets, - clock=self.clock, - jitter=self.jitter, - alert_sink=self.alert_sink, - policy=self.policy, + runners: list[CaptureStreamRunner] = [] + try: + for stream in self.config.streams: + runners.append( + CaptureStreamRunner( + self.config, + stream, + storage_guard=self.storage_guard, + archive=self.archive, + mappings=self.mappings, + http=self.http, + websockets=self.websockets, + clock=self.clock, + jitter=self.jitter, + alert_sink=self.alert_sink, + policy=self.policy, + monotonic=self.monotonic, + ) + ) + except Exception as exc: # noqa: BLE001 - initialization failure blocks all streams + reports = tuple( + ( + runners[index]._report() + if index < len(runners) + else self._empty_stream_report( + stream, + errors=(f"{type(exc).__name__}: {exc}",), + ) + ) + for index, stream in enumerate(self.config.streams) ) - for stream in self.config.streams - ] - results = await asyncio.gather( - *( + return self._write_report( + run_id, + started, + reports, + preflight=preflight, + status="CAPTURE_FAILED", + long_running_capture_started=False, + ) + tasks = { + asyncio.create_task( runner.run(maximum_websocket_messages=maximum_websocket_messages) - for runner in runners + ): runner + for runner in runners + } + first_cause: str | None = None + try: + pending = set(tasks) + while pending: + done, pending = await asyncio.wait(pending, return_when=asyncio.FIRST_COMPLETED) + for task in done: + runner = tasks[task] + try: + result = task.result() + except asyncio.CancelledError: + result = runner._last_report or runner._report() + except Exception as exc: # noqa: BLE001 - coordinator retains first cause + first_cause = first_cause or f"{type(exc).__name__}: {exc}" + runner._errors.append(first_cause) + runner._outcome = "FAILED" + runner._terminal_cleanup( + "coordinator_stream_exception", abort_reason=first_cause + ) + result = runner._report() + if not self._stream_succeeded(result, maximum_websocket_messages): + first_cause = first_cause or ( + result.errors[0] if result.errors else f"{result.stream_id}: failed" + ) + if first_cause is not None: + for task in pending: + task.cancel() + await asyncio.gather(*pending, return_exceptions=True) + break + except asyncio.CancelledError: + for task in tasks: + if not task.done(): + task.cancel() + await asyncio.gather(*tasks, return_exceptions=True) + reports = tuple(runner._last_report or runner._report() for runner in runners) + self._write_report( + run_id, + started, + reports, + preflight=preflight, + status="CAPTURE_CANCELLED", + long_running_capture_started=maximum_websocket_messages is None, ) + raise + reports = tuple(runner._last_report or runner._report() for runner in runners) + all_succeeded = all( + self._stream_succeeded(item, maximum_websocket_messages) for item in reports ) - status = ( - "BOUNDED_PROBE_COMPLETE" - if maximum_websocket_messages is not None - else "STOPPED_WITHOUT_CERTIFICATION" - ) + status = "BOUNDED_PROBE_COMPLETE" if all_succeeded else "CAPTURE_FAILED" + if maximum_websocket_messages is None: + status = "STOPPED_WITHOUT_CERTIFICATION" if all_succeeded else "CAPTURE_FAILED" return self._write_report( run_id, started, - tuple(results), + reports, preflight=preflight, status=status, long_running_capture_started=maximum_websocket_messages is None, ) + @staticmethod + def _stream_succeeded( + report: CaptureStreamReport, maximum_websocket_messages: int | None + ) -> bool: + return bool( + maximum_websocket_messages is not None + and report.outcome == "BOUNDED_COMPLETE" + and report.final_state == CaptureState.PAUSED.value + and not report.errors + and report.audit_failures == 0 + and report.websocket_messages == maximum_websocket_messages + and report.raw_segments == report.archived_segments + and report.normalized_epochs >= 1 + and report.pending_raw_messages == 0 + and report.pending_raw_segments == 0 + ) + + @staticmethod + def _empty_stream_report( + stream: StreamConfig, *, errors: tuple[str, ...] + ) -> CaptureStreamReport: + return CaptureStreamReport( + stream_id=stream.stream_id, + provider=stream.provider.value, + capability=stream.capability, + outcome="FAILED" if errors else "NOT_STARTED", + final_state=CaptureState.PAUSED.value, + websocket_messages=0, + raw_segments=0, + archived_segments=0, + normalized_epochs=0, + accepted_rows=0, + quarantined_rows=0, + resyncs=0, + duplicate_or_old_updates=0, + absent_level_deletes=0, + heartbeats=0, + first_received_at=None, + last_received_at=None, + audit_events=0, + audit_failures=0, + audit_chain_sha256=None, + audit_references=(), + errors=errors, + epoch_receipts=(), + epoch_aborts=(), + archive_receipts=(), + pending_raw_messages=0, + pending_raw_segments=0, + ) + def _write_report( self, run_id: str, @@ -656,16 +857,27 @@ def _write_report( long_running_capture_started: bool, ) -> CaptureRunReport: ended = self.clock.now() + audit_identity = [ + { + "stream_id": item.stream_id, + "audit_chain_sha256": item.audit_chain_sha256, + "audit_references": list(item.audit_references), + } + for item in streams + ] + audit_reference_hash = hashlib.sha256(canonical_json_bytes(audit_identity)).hexdigest() identity = { - "schema_version": "puresaber.crypto-l2-capture-run@1.0.0", + "schema_version": "puresaber.crypto-l2-capture-run@1.1.0", "run_id": run_id, "started_at": utc_text(started_at, "started_at"), "ended_at": utc_text(ended, "ended_at"), "status": status, + "collector_commit": self.config.collector_commit, "providers": list(self.config.providers), "capabilities": list(self.config.capabilities), "streams": [asdict(item) for item in streams], "archive_preflight_receipt": preflight.receipt_path if preflight else None, + "audit_reference_sha256": audit_reference_hash, "continuous_days": 0, "market_data_certified": False, "long_running_capture_started": long_running_capture_started, @@ -675,24 +887,27 @@ def _write_report( report_path: Path | None = None try: report_path = self.config.hot_root / "capture" / "run-reports" / f"{run_id}.json" - report_path.parent.mkdir(parents=True, exist_ok=True) - with report_path.open("xb") as stream: - stream.write(canonical_json_bytes(payload)) - stream.flush() - os.fsync(stream.fileno()) - except OSError as exc: + _atomic_immutable_write( + report_path, canonical_json_bytes(payload), root=self.config.hot_root + ) + except Exception as exc: # noqa: BLE001 - report persistence is part of outcome self.alert_sink(f"CAPTURE_REPORT_PERSISTENCE_FAILED:{type(exc).__name__}:{exc}") report_path = None + status = "CAPTURE_REPORT_PERSISTENCE_FAILED" + identity["status"] = status + report_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() return CaptureRunReport( schema_version=identity["schema_version"], run_id=run_id, started_at=identity["started_at"], ended_at=identity["ended_at"], status=status, + collector_commit=self.config.collector_commit, providers=self.config.providers, capabilities=self.config.capabilities, streams=streams, archive_preflight_receipt=identity["archive_preflight_receipt"], + audit_reference_sha256=audit_reference_hash, continuous_days=0, market_data_certified=False, long_running_capture_started=long_running_capture_started, diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py index fe1e7d0..da1526f 100644 --- a/src/quant_data_kit/capture_v2/epoch.py +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -5,14 +5,19 @@ import hashlib import json import os -from collections.abc import Iterable, Mapping +import time +from collections.abc import Callable, Iterable, Mapping from dataclasses import asdict, dataclass from datetime import datetime, timezone from pathlib import Path from typing import Any from quant_data_kit.capture_v2.models import canonical_json_bytes, utc_text -from quant_data_kit.capture_v2.storage import CaptureStorageGuard, RawSegment +from quant_data_kit.capture_v2.storage import ( + CaptureStorageGuard, + RawSegment, + _atomic_immutable_write, +) from quant_data_kit.data_lake import ( NormalizationResult, RawObjectReference, @@ -74,9 +79,15 @@ def __init__( storage_guard: CaptureStorageGuard, policy: StoragePolicy = _DEFAULT_POLICY, max_part_rows: int = 50_000, + flush_records: int = 256, + flush_bytes: int = 1024 * 1024, + flush_seconds: float = 1.0, + monotonic: Callable[[], float] = time.monotonic, ) -> None: if max_part_rows < 1: raise ValidationError("max_part_rows must be positive") + if flush_records < 1 or flush_bytes < 1 or flush_seconds <= 0: + raise ValidationError("journal flush limits must be positive") self.hot_root = Path(hot_root) self.epoch_id = epoch_id self.stream_id = stream_id @@ -85,6 +96,10 @@ def __init__( self.storage_guard = storage_guard self.policy = policy self.max_part_rows = max_part_rows + self.flush_records = flush_records + self.flush_bytes = flush_bytes + self.flush_seconds = flush_seconds + self.monotonic = monotonic self.root = ( self.hot_root / "capture" @@ -96,11 +111,15 @@ def __init__( self._open_path = self.root / "part-open.ndjson" self._open_stream = self._open_path.open("xb") self._open_rows = 0 + self._unflushed_rows = 0 + self._unflushed_bytes = 0 + self._last_flush = monotonic() self._records = 0 self._parts: list[EpochPart] = [] self._raw_references: list[RawObjectReference] = [] self._raw_manifest_hashes: set[str] = set() - self._closed = False + self._state = "OPEN" + self._finalize_failures = 0 def append(self, records: Iterable[Mapping[str, Any]]) -> None: self._require_open() @@ -108,13 +127,29 @@ def append(self, records: Iterable[Mapping[str, Any]]) -> None: body = canonical_json_bytes(dict(record)) + b"\n" self.storage_guard.require_hot_capacity(projected_write_bytes=len(body)) self._open_stream.write(body) - self._open_stream.flush() - os.fsync(self._open_stream.fileno()) self._open_rows += 1 self._records += 1 + self._unflushed_rows += 1 + self._unflushed_bytes += len(body) + if ( + self._unflushed_rows >= self.flush_records + or self._unflushed_bytes >= self.flush_bytes + or self.monotonic() - self._last_flush >= self.flush_seconds + ): + self.flush() if self._open_rows >= self.max_part_rows: self._seal_part() + def flush(self) -> None: + self._require_open() + if self._unflushed_rows == 0: + return + self._open_stream.flush() + os.fsync(self._open_stream.fileno()) + self._unflushed_rows = 0 + self._unflushed_bytes = 0 + self._last_flush = self.monotonic() + def record_segment(self, segment: RawSegment) -> None: self._require_open() reference = segment.raw_manifest.reference() @@ -127,39 +162,130 @@ def record_segment(self, segment: RawSegment) -> None: def records(self) -> int: return self._records + @classmethod + def recover( + cls, + hot_root: Path, + *, + epoch_id: str, + stream_id: str, + provider: str, + venue: str, + storage_guard: CaptureStorageGuard, + policy: StoragePolicy = _DEFAULT_POLICY, + max_part_rows: int = 50_000, + flush_records: int = 256, + flush_bytes: int = 1024 * 1024, + flush_seconds: float = 1.0, + monotonic: Callable[[], float] = time.monotonic, + ) -> NormalizedEpochJournal: + """Reload a retryable failed finalize while preserving journal and Raw lineage.""" + + root = ( + Path(hot_root) + / "capture" + / "normalized-epoch-journal" + / f"stream={stream_id}" + / f"epoch={epoch_id}" + ) + failures = sorted(root.glob("finalize-failure-*.json")) + if not failures or tuple(root.glob("receipt-sha256-*.json")): + raise ValidationError("Normalized epoch is not a retryable failed finalize") + failure = json.loads(failures[-1].read_text(encoding="utf-8")) + failure_digest = failure.pop("failure_sha256", None) + if failure_digest != hashlib.sha256(canonical_json_bytes(failure)).hexdigest(): + raise ValidationError("Normalized epoch failure record hash changed") + if failure.get("stream_id") != stream_id or not failure.get("retryable_in_process"): + raise ValidationError("Normalized epoch failure record is not recoverable") + self = cls.__new__(cls) + self.hot_root = Path(hot_root) + self.epoch_id = epoch_id + self.stream_id = stream_id + self.provider = provider + self.venue = venue + self.storage_guard = storage_guard + self.policy = policy + self.max_part_rows = max_part_rows + self.flush_records = flush_records + self.flush_bytes = flush_bytes + self.flush_seconds = flush_seconds + self.monotonic = monotonic + self.root = root + self._parts = [] + self._records = 0 + for path in sorted(root.glob("part-*-sha256-*.ndjson")): + digest = _sha256_file(path) + if f"sha256-{digest}.ndjson" not in path.name: + raise ValidationError(f"Normalized recovery part hash changed: {path}") + with path.open("rb") as stream: + rows = sum(1 for line in stream if line.strip()) + self._parts.append(EpochPart(path.name, rows, digest, path.stat().st_size)) + self._records += rows + self._raw_references = [ + RawObjectReference(**item) for item in failure.get("raw_references", []) + ] + self._raw_manifest_hashes = {item.manifest_sha256 for item in self._raw_references} + if int(failure.get("records", -1)) != self._records: + raise ValidationError("Normalized recovery record count changed") + self._open_path = root / "part-open.ndjson" + if self._open_path.exists() and self._open_path.stat().st_size: + raise ValidationError("Normalized recovery found an unsealed open part") + self._open_stream = self._open_path.open("ab") + self._open_rows = 0 + self._unflushed_rows = 0 + self._unflushed_bytes = 0 + self._last_flush = monotonic() + self._closed = False + self._state = "OPEN" + self._finalize_failures = len(failures) + return self + def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochReceipt: self._require_open() - self._seal_part() + try: + self._seal_part() + if self._records and not self._raw_references: + raise ValidationError("Normalized epoch records require Raw segment lineage") + result = ( + self._publish_normalized() + if self._records + else NormalizationResult(None, 0, 0, None) + ) + created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") + identity = { + "schema_version": "puresaber.normalized-epoch-receipt@1.1.0", + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": created, + "records": self._records, + "raw_segments": len(self._raw_references), + "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "normalized_snapshot_id": result.snapshot.snapshot_id if result.snapshot else None, + "accepted_rows": result.accepted_rows, + "quarantined_rows": result.quarantined_rows, + } + receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "receipt_sha256": receipt_hash} + receipt_path = self.root / f"receipt-sha256-{receipt_hash}.json" + _atomic_immutable_write(receipt_path, canonical_json_bytes(payload), root=self.hot_root) + reloaded = json.loads(receipt_path.read_text(encoding="utf-8")) + if reloaded != payload: + raise ValidationError("Normalized epoch receipt reload mismatch") + except Exception as exc: + try: + self._record_finalize_failure(exc) + except Exception as abort_exc: # noqa: BLE001 - both failures must be preserved + raise ValidationError( + "Normalized finalize failed and its durable failure record also failed; " + f"primary={type(exc).__name__}: {exc}; " + f"audit={type(abort_exc).__name__}: {abort_exc}" + ) from exc + raise self._open_stream.close() - self._closed = True - if self._records and not self._raw_references: - raise ValidationError("Normalized epoch records require Raw segment lineage") - result = ( - self._publish_normalized() if self._records else NormalizationResult(None, 0, 0, None) - ) - created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") - identity = { - "schema_version": "puresaber.normalized-epoch-receipt@1.0.0", - "epoch_id": self.epoch_id, - "stream_id": self.stream_id, - "provider": self.provider, - "venue": self.venue, - "created_at": created, - "records": self._records, - "raw_segments": len(self._raw_references), - "raw_references": [asdict(item) for item in self._raw_references], - "journal_parts": [asdict(item) for item in self._parts], - "normalized_snapshot_id": result.snapshot.snapshot_id if result.snapshot else None, - "accepted_rows": result.accepted_rows, - "quarantined_rows": result.quarantined_rows, - } - receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() - payload = {**identity, "receipt_sha256": receipt_hash} - receipt_path = self.root / "receipt.json" - with receipt_path.open("xb") as stream: - stream.write(canonical_json_bytes(payload)) - stream.flush() - os.fsync(stream.fileno()) + self._state = "FINALIZED" return NormalizedEpochReceipt( schema_version=identity["schema_version"], epoch_id=self.epoch_id, @@ -179,32 +305,32 @@ def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochRece ) def abort_visible(self, reason: str) -> Path: - if not self._closed: - self._open_stream.flush() - os.fsync(self._open_stream.fileno()) + if self._state == "FINALIZED": + raise ValidationError("cannot abort a finalized Normalized epoch") + if self._state == "ABORTED": + raise ValidationError("Normalized epoch is already aborted") + if self._state == "OPEN": + self.flush() self._open_stream.close() - self._closed = True payload = { - "schema_version": "puresaber.normalized-epoch-abort@1.0.0", + "schema_version": "puresaber.normalized-epoch-abort@1.1.0", "epoch_id": self.epoch_id, "stream_id": self.stream_id, "reason": reason, "records": self._records, "raw_references": [asdict(item) for item in self._raw_references], + "retryable": False, } payload["abort_sha256"] = hashlib.sha256(canonical_json_bytes(payload)).hexdigest() - path = self.root / "aborted.json" - with path.open("xb") as stream: - stream.write(canonical_json_bytes(payload)) - stream.flush() - os.fsync(stream.fileno()) + path = self.root / f"aborted-sha256-{payload['abort_sha256']}.json" + _atomic_immutable_write(path, canonical_json_bytes(payload), root=self.hot_root) + self._state = "ABORTED" return path def _seal_part(self) -> None: if self._open_rows == 0: return - self._open_stream.flush() - os.fsync(self._open_stream.fileno()) + self.flush() self._open_stream.close() digest = _sha256_file(self._open_path) index = len(self._parts) + 1 @@ -220,9 +346,34 @@ def _seal_part(self) -> None: ) ) self._open_rows = 0 + self._unflushed_rows = 0 + self._unflushed_bytes = 0 self._open_path = self.root / "part-open.ndjson" self._open_stream = self._open_path.open("xb") + def _record_finalize_failure(self, exc: Exception) -> Path: + self._finalize_failures += 1 + identity = { + "schema_version": "puresaber.normalized-epoch-finalize-failure@1.0.0", + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "attempt": self._finalize_failures, + "exception": type(exc).__name__, + "message": str(exc), + "records": self._records, + "raw_references": [asdict(item) for item in self._raw_references], + "retryable_in_process": True, + "restart_recovery": "journal parts and Raw lineage retained", + } + digest = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + path = self.root / (f"finalize-failure-{self._finalize_failures:04d}-sha256-{digest}.json") + _atomic_immutable_write( + path, + canonical_json_bytes({**identity, "failure_sha256": digest}), + root=self.hot_root, + ) + return path + def _publish_normalized(self) -> NormalizationResult: return write_normalized_events( self.hot_root, @@ -251,10 +402,15 @@ def _iter_records(self) -> Iterable[dict[str, Any]]: yield value def _require_open(self) -> None: - if self._closed: + if self._state != "OPEN": raise ValidationError("Normalized epoch journal is already closed") def __del__(self) -> None: stream = getattr(self, "_open_stream", None) if stream is not None and not stream.closed: + try: + stream.flush() + os.fsync(stream.fileno()) + except OSError: + pass stream.close() diff --git a/src/quant_data_kit/capture_v2/models.py b/src/quant_data_kit/capture_v2/models.py index 065bf2f..42dd8f5 100644 --- a/src/quant_data_kit/capture_v2/models.py +++ b/src/quant_data_kit/capture_v2/models.py @@ -14,6 +14,7 @@ from pathlib import Path from types import MappingProxyType from typing import Any, ClassVar, Protocol +from urllib.parse import parse_qsl, urlsplit from quant_data_kit.domain_v2 import SymbolMapping from quant_data_kit.exceptions import ValidationError @@ -140,6 +141,33 @@ def __post_init__(self) -> None: raise ValidationError("Raw segment rotation limits must be positive") +@dataclass(frozen=True) +class CaptureDurabilityPolicy: + """Bound capacity staleness and batch durability without per-message disk probes.""" + + capacity_probe_messages: int = 256 + capacity_probe_bytes: int = 4 * 1024 * 1024 + capacity_probe_seconds: float = 1.0 + normalized_flush_records: int = 256 + normalized_flush_bytes: int = 1024 * 1024 + normalized_flush_seconds: float = 1.0 + probe_timeout_seconds: float = 30.0 + + def __post_init__(self) -> None: + integer_fields = ( + "capacity_probe_messages", + "capacity_probe_bytes", + "normalized_flush_records", + "normalized_flush_bytes", + ) + if any(getattr(self, name) < 1 for name in integer_fields): + raise ValidationError("durability message/byte limits must be positive") + if self.capacity_probe_seconds <= 0 or self.normalized_flush_seconds <= 0: + raise ValidationError("durability time limits must be positive") + if self.probe_timeout_seconds <= 0: + raise ValidationError("probe_timeout_seconds must be positive") + + @dataclass(frozen=True) class StreamConfig: stream_id: str @@ -159,11 +187,15 @@ def __post_init__(self) -> None: value = getattr(self, name) if not isinstance(value, str) or not value.strip(): raise ValidationError(f"{name} must be a non-empty string") - if not self.websocket_url.startswith("wss://"): - raise ValidationError("public market-data websocket_url must use TLS wss://") + _validate_public_url(self.websocket_url, expected_scheme="wss", field="websocket_url") if self.provider is Provider.BINANCE: - if not self.rest_snapshot_url or not self.rest_snapshot_url.startswith("https://"): + if not self.rest_snapshot_url: raise ValidationError("Binance L2 requires an HTTPS REST snapshot endpoint") + _validate_public_url( + self.rest_snapshot_url, + expected_scheme="https", + field="rest_snapshot_url", + ) elif self.rest_snapshot_url is not None: raise ValidationError("OKX books snapshot must arrive on its public WebSocket channel") if self.price_scale < 0 or self.quantity_scale < 0: @@ -171,7 +203,13 @@ def __post_init__(self) -> None: @property def capability(self) -> str: - asset = "btc" if "BTC" in self.native_symbol.upper() else "eth" + symbol = self.native_symbol.upper() + if symbol in {"BTCUSDT", "BTC-USDT", "BTC-USDT-SWAP"}: + asset = "btc" + elif symbol in {"ETHUSDT", "ETH-USDT", "ETH-USDT-SWAP"}: + asset = "eth" + else: + asset = "unsupported" suffix = "spot-l2" if self.market is MarketKind.SPOT else "usdt-perpetual-l2" return f"{asset}-{suffix}" @@ -190,6 +228,7 @@ class CaptureConfig: streams: tuple[StreamConfig, ...] = field(default_factory=tuple) rotation: SegmentRotation = field(default_factory=SegmentRotation) retry: RetryPolicy = field(default_factory=RetryPolicy) + durability: CaptureDurabilityPolicy = field(default_factory=CaptureDurabilityPolicy) archive_reserve_bytes: int = 150 * 1024**3 def __post_init__(self) -> None: @@ -467,6 +506,21 @@ def payload(self) -> bytes: return canonical_json_bytes(value) +@dataclass(frozen=True) +class AuditReference: + ordinal: int + audit_sha256: str + audit_path: str + + def __post_init__(self) -> None: + if self.ordinal < 1 or len(self.audit_sha256) != 64 or not self.audit_path: + raise ValidationError("durable audit reference is malformed") + + +class AuditPersistenceError(ValidationError): + """A state/audit event was not durably committed and must not change memory state.""" + + class CaptureStateMachine: _ALLOWED: ClassVar[dict[CaptureState, set[CaptureState]]] = { CaptureState.CONNECTING: {CaptureState.BUFFERING, CaptureState.PAUSED}, @@ -492,7 +546,7 @@ def __init__( connection_id: str, collector_commit: str, clock: Clock, - audit_sink: Callable[[RawFrame], None] | None = None, + audit_sink: Callable[[AuditEvent], AuditReference] | None = None, alert_sink: Callable[[str], None] | None = None, ) -> None: self.stream = stream @@ -503,12 +557,17 @@ def __init__( self.alert_sink = alert_sink or (lambda _message: None) self.state = CaptureState.CONNECTING self._events: list[AuditEvent] = [] + self._references: list[AuditReference] = [] self._record(None, CaptureState.CONNECTING, "state_initialized", {}) @property def events(self) -> tuple[AuditEvent, ...]: return tuple(self._events) + @property + def references(self) -> tuple[AuditReference, ...]: + return tuple(self._references) + def transition( self, target: CaptureState, @@ -530,8 +589,9 @@ def transition( f"illegal capture state transition: {source.value}->{target.value}; " f"audit_ordinal={event.ordinal}" ) + event = self._record(source, target, reason, dict(details or {})) self.state = target - return self._record(source, target, reason, dict(details or {})) + return event def audit( self, event: str, reason: str, details: Mapping[str, Any] | None = None @@ -558,29 +618,20 @@ def _record( reason=reason, details=details, ) - self._events.append(event) if self.audit_sink is not None: try: - self.audit_sink( - RawFrame( - frame_kind="audit", - provider=self.stream.provider.value, - stream_id=self.stream.stream_id, - connection_id=self.connection_id, - subscription=self.stream.channel, - transport="audit", - tls_url="audit://local", - received_at=occurred, - observed_at=occurred, - payload=event.payload(), - native_sequence={"audit_ordinal": event.ordinal}, - collector_commit=self.collector_commit, - ) - ) - except Exception as exc: # noqa: BLE001 - audit persistence must not mask state + reference = self.audit_sink(event) + if reference.ordinal != event.ordinal: + raise ValidationError("durable audit ordinal does not match event") + except Exception as exc: self.alert_sink( f"AUDIT_PERSISTENCE_FAILED:{self.stream.stream_id}:{type(exc).__name__}:{exc}" ) + raise AuditPersistenceError( + f"audit persistence failed before state commit: {type(exc).__name__}: {exc}" + ) from exc + self._references.append(reference) + self._events.append(event) return event @@ -594,6 +645,55 @@ def assert_m7_scope(streams: Iterable[StreamConfig]) -> None: ) if providers != M7_PROVIDERS: raise ValidationError(f"M7 providers must be {list(M7_PROVIDERS)}, got {list(providers)}") - missing = sorted(set(M7_CAPABILITIES).difference(capabilities)) - if missing: - raise ValidationError(f"M7 capabilities are missing: {missing}") + if capabilities != M7_CAPABILITIES: + raise ValidationError( + f"M7 capabilities must be exactly {list(M7_CAPABILITIES)}, got {list(capabilities)}" + ) + expected = {_m7_stream_identity(item) for item in default_crypto_l2_streams()} + actual = {_m7_stream_identity(item) for item in values} + if len(actual) != 8 or actual != expected: + missing = sorted(expected.difference(actual)) + unexpected = sorted(actual.difference(expected)) + raise ValidationError( + "M7 stream identities/endpoints must match the frozen eight-stream scope: " + f"missing={missing}, unexpected={unexpected}" + ) + + +def _validate_public_url(value: str, *, expected_scheme: str, field: str) -> None: + parsed = urlsplit(value) + if ( + parsed.scheme.lower() != expected_scheme + or not parsed.hostname + or parsed.username is not None + or parsed.password is not None + or parsed.fragment + ): + raise ValidationError(f"{field} must be a credential-free TLS {expected_scheme} URL") + + +def _canonical_url_identity( + value: str, +) -> tuple[str, str, int | None, str, tuple[tuple[str, str], ...]]: + parsed = urlsplit(value) + return ( + parsed.scheme.lower(), + (parsed.hostname or "").lower(), + parsed.port, + parsed.path, + tuple(sorted(parse_qsl(parsed.query, keep_blank_values=True))), + ) + + +def _m7_stream_identity(stream: StreamConfig) -> tuple[Any, ...]: + return ( + stream.provider.value, + stream.market.value, + stream.native_symbol, + stream.instrument_id, + stream.stream_id, + stream.venue, + stream.channel, + _canonical_url_identity(stream.websocket_url), + _canonical_url_identity(stream.rest_snapshot_url) if stream.rest_snapshot_url else None, + ) diff --git a/src/quant_data_kit/capture_v2/storage.py b/src/quant_data_kit/capture_v2/storage.py index fa94eed..03ccb74 100644 --- a/src/quant_data_kit/capture_v2/storage.py +++ b/src/quant_data_kit/capture_v2/storage.py @@ -7,7 +7,10 @@ import json import os import shutil +import stat import tempfile +import threading +import time import uuid from collections.abc import Callable, Iterable, Mapping from dataclasses import asdict, dataclass @@ -17,6 +20,8 @@ from typing import Protocol from quant_data_kit.capture_v2.models import ( + AuditEvent, + AuditReference, RawFrame, SegmentRotation, canonical_json_bytes, @@ -30,6 +35,7 @@ write_raw_bytes, ) from quant_data_kit.exceptions import ValidationError +from quant_data_kit.process_lock import process_file_lock UTC = timezone.utc _GIB = 1024**3 @@ -208,6 +214,10 @@ def __init__( volume_identity: VolumeIdentityProbe = default_volume_identity, capacity_probe: CapacityProbe = default_capacity_probe, hot_size_probe: Callable[[Path], int] | None = None, + monotonic: Callable[[], float] = time.monotonic, + probe_messages: int = 256, + probe_bytes: int = 4 * 1024 * 1024, + probe_seconds: float = 1.0, ) -> None: self.hot_root = Path(hot_root) self.archive_root = Path(archive_root) @@ -216,6 +226,26 @@ def __init__( self.volume_identity = volume_identity self.capacity_probe = capacity_probe self.hot_size_probe = hot_size_probe or self._tree_size + if probe_messages < 1 or probe_bytes < 1 or probe_seconds <= 0: + raise ValidationError("capacity probe intervals must be positive") + self.monotonic = monotonic + self.probe_messages = probe_messages + self.probe_bytes = probe_bytes + self.probe_seconds = probe_seconds + self._lock = threading.RLock() + self._hot_capacity: DiskCapacity | None = None + self._hot_bytes = 0 + self._hot_unprobed_bytes = 0 + self._hot_unprobed_messages = 0 + self._archive_capacity: DiskCapacity | None = None + self._archive_unprobed_bytes = 0 + self._archive_unprobed_messages = 0 + self._last_hot_probe = float("-inf") + self._last_archive_probe = float("-inf") + self._capacity_probe_count = 0 + self._tree_scan_count = 0 + self._hot_reservation_count = 0 + self._archive_reservation_count = 0 @staticmethod def _tree_size(root: Path) -> int: @@ -238,8 +268,11 @@ def preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: reasons.append(f"{name} must be an explicit absolute path") elif not root.is_dir(): reasons.append(f"{name} is missing or not a directory: {root}") - elif root.is_symlink(): - reasons.append(f"{name} cannot be a symbolic link: {root}") + else: + try: + _validate_safe_path(root, root, allow_missing=False) + except ValidationError as exc: + reasons.append(f"{name} is unsafe: {exc}") if reasons: return StoragePreflight(False, None, None, None, None, None, None, tuple(reasons)) try: @@ -254,15 +287,15 @@ def preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: if overlap: reasons.append(f"hot and archive roots share physical devices: {overlap}") try: - hot_capacity = self.capacity_probe(self.hot_root) - archive_capacity = self.capacity_probe(self.archive_root) + hot_capacity = self._probe_capacity(self.hot_root) + archive_capacity = self._probe_capacity(self.archive_root) minimum_hot = self._minimum_free(hot_capacity, self.policy) minimum_archive = self._minimum_free(archive_capacity, self.policy) hot_decision = evaluate_capacity( self.hot_root, projected_write_bytes=projected_hot_bytes, policy=self.policy, - current_hot_bytes=self.hot_size_probe(self.hot_root), + current_hot_bytes=self._probe_hot_size(), disk_total_bytes=hot_capacity.total_bytes, disk_free_bytes=hot_capacity.free_bytes, ) @@ -276,7 +309,7 @@ def preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: ) except Exception as exc: # noqa: BLE001 - injectable capacity probe must fail closed reasons.append(f"capacity probe failed: {type(exc).__name__}: {exc}") - return StoragePreflight( + result = StoragePreflight( allowed=not reasons, hot_identity=hot_identity, archive_identity=archive_identity, @@ -286,6 +319,20 @@ def preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: minimum_archive_free_bytes=minimum_archive, reasons=tuple(reasons), ) + if result.allowed: + assert hot_capacity is not None and archive_capacity is not None + with self._lock: + self._hot_capacity = hot_capacity + self._archive_capacity = archive_capacity + self._hot_bytes = self._last_hot_size + self._hot_unprobed_bytes = projected_hot_bytes + self._hot_unprobed_messages = 0 + self._archive_unprobed_bytes = 0 + self._archive_unprobed_messages = 0 + now = self.monotonic() + self._last_hot_probe = now + self._last_archive_probe = now + return result def require_preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight: decision = self.preflight(projected_hot_bytes=projected_hot_bytes) @@ -294,27 +341,133 @@ def require_preflight(self, *, projected_hot_bytes: int = 0) -> StoragePreflight return decision def require_hot_capacity(self, *, projected_write_bytes: int) -> None: - capacity = self.capacity_probe(self.hot_root) + if projected_write_bytes < 0: + raise ValidationError("projected_write_bytes cannot be negative") + with self._lock: + self._ensure_hot_baseline() + now = self.monotonic() + if self._probe_due( + self._hot_unprobed_messages + 1, + self._hot_unprobed_bytes + projected_write_bytes, + now - self._last_hot_probe, + ): + self._refresh_hot(now) + assert self._hot_capacity is not None + decision = evaluate_capacity( + self.hot_root, + projected_write_bytes=projected_write_bytes, + policy=self.policy, + current_hot_bytes=self._hot_bytes + self._hot_unprobed_bytes, + disk_total_bytes=self._hot_capacity.total_bytes, + disk_free_bytes=self._hot_capacity.free_bytes - self._hot_unprobed_bytes, + ) + if not decision.allowed: + raise CapturePausedError(decision.alert or "CAPTURE_PAUSED") + self._hot_unprobed_bytes += projected_write_bytes + self._hot_unprobed_messages += 1 + self._hot_reservation_count += 1 + + def require_archive_capacity(self, *, projected_write_bytes: int) -> None: + if projected_write_bytes < 0: + raise ValidationError("projected_write_bytes cannot be negative") + with self._lock: + self._ensure_archive_baseline() + now = self.monotonic() + if self._probe_due( + self._archive_unprobed_messages + 1, + self._archive_unprobed_bytes + projected_write_bytes, + now - self._last_archive_probe, + ): + self._refresh_archive(now) + assert self._archive_capacity is not None + minimum = self._minimum_free(self._archive_capacity, self.policy) + projected = ( + self._archive_capacity.free_bytes + - self._archive_unprobed_bytes + - projected_write_bytes + ) + if projected < minimum: + raise CapturePausedError( + "CAPTURE_PAUSED: archive free-space floor breached: " + f"projected={projected}, minimum={minimum}" + ) + self._archive_unprobed_bytes += projected_write_bytes + self._archive_unprobed_messages += 1 + self._archive_reservation_count += 1 + + @property + def probe_statistics(self) -> Mapping[str, int]: + with self._lock: + return MappingProxyType( + { + "capacity_probes": self._capacity_probe_count, + "tree_scans": self._tree_scan_count, + "hot_reservations": self._hot_reservation_count, + "archive_reservations": self._archive_reservation_count, + "maximum_unprobed_bytes": self.probe_bytes, + } + ) + + def force_hot_probe(self) -> None: + with self._lock: + self._refresh_hot(self.monotonic()) + + def _probe_due(self, messages: int, byte_count: int, age: float) -> bool: + return ( + messages >= self.probe_messages + or byte_count >= self.probe_bytes + or age >= self.probe_seconds + ) + + def _probe_capacity(self, path: Path) -> DiskCapacity: + self._capacity_probe_count += 1 + return self.capacity_probe(path) + + def _probe_hot_size(self) -> int: + self._tree_scan_count += 1 + value = self.hot_size_probe(self.hot_root) + self._last_hot_size = value + return value + + def _ensure_hot_baseline(self) -> None: + if self._hot_capacity is None: + self._refresh_hot(self.monotonic()) + + def _ensure_archive_baseline(self) -> None: + if self._archive_capacity is None: + self._refresh_archive(self.monotonic()) + + def _refresh_hot(self, now: float) -> None: + capacity = self._probe_capacity(self.hot_root) + hot_bytes = self._probe_hot_size() decision = evaluate_capacity( self.hot_root, - projected_write_bytes=projected_write_bytes, + projected_write_bytes=0, policy=self.policy, - current_hot_bytes=self.hot_size_probe(self.hot_root), + current_hot_bytes=hot_bytes, disk_total_bytes=capacity.total_bytes, disk_free_bytes=capacity.free_bytes, ) if not decision.allowed: raise CapturePausedError(decision.alert or "CAPTURE_PAUSED") - - def require_archive_capacity(self, *, projected_write_bytes: int) -> None: - capacity = self.capacity_probe(self.archive_root) + self._hot_capacity = capacity + self._hot_bytes = hot_bytes + self._hot_unprobed_bytes = 0 + self._hot_unprobed_messages = 0 + self._last_hot_probe = now + + def _refresh_archive(self, now: float) -> None: + capacity = self._probe_capacity(self.archive_root) minimum = self._minimum_free(capacity, self.policy) - projected = capacity.free_bytes - projected_write_bytes - if projected < minimum: + if capacity.free_bytes < minimum: raise CapturePausedError( "CAPTURE_PAUSED: archive free-space floor breached: " - f"projected={projected}, minimum={minimum}" + f"projected={capacity.free_bytes}, minimum={minimum}" ) + self._archive_capacity = capacity + self._archive_unprobed_bytes = 0 + self._archive_unprobed_messages = 0 + self._last_archive_probe = now @dataclass(frozen=True) @@ -393,11 +546,19 @@ def drain_completed(self) -> tuple[RawSegment, ...]: self._completed.clear() return completed + def peek_completed(self) -> tuple[RawSegment, ...]: + return tuple(self._completed) + + def acknowledge_completed(self, segment: RawSegment) -> None: + if not self._completed or self._completed[0] != segment: + raise ValidationError("Raw segment acknowledgement is out of order") + self._completed.pop(0) + def flush(self) -> RawSegment | None: if not self._frames: return None payload = b"".join(self._records) - self.storage_guard.require_hot_capacity(projected_write_bytes=len(payload) + 4096) + self.storage_guard.require_hot_capacity(projected_write_bytes=4096) sequence_range: dict[str, tuple[int, int]] = {} for frame in self._frames: for name, value in frame.native_sequence.items(): @@ -473,6 +634,7 @@ class ArchivePreflightReceipt: verified_at: str hot_identity: VolumeIdentity archive_identity: VolumeIdentity + restore_identity: VolumeIdentity probe_sha256: str restored_sha256: str receipt_path: str @@ -499,6 +661,7 @@ class SegmentArchiveReceipt: eligible_for_cleanup: bool cleanup_performed: bool receipt_sha256: str + receipt_path: str def _sha256_file(path: Path) -> str: @@ -509,24 +672,169 @@ def _sha256_file(path: Path) -> str: return digest.hexdigest() -def _atomic_immutable_write(path: Path, body: bytes) -> None: - path.parent.mkdir(parents=True, exist_ok=True) - if path.exists(): - if path.is_file() and path.read_bytes() == body: - return - raise ValidationError(f"immutable archive path already contains different bytes: {path}") - temporary = path.with_name(f".{path.name}.{uuid.uuid4().hex}.tmp") +def _is_reparse_point(path: Path) -> bool: + if path.is_symlink(): + return True + try: + attributes = getattr(os.lstat(path), "st_file_attributes", 0) + except FileNotFoundError: + return False + return bool(attributes & getattr(stat, "FILE_ATTRIBUTE_REPARSE_POINT", 0x400)) + + +def _validate_safe_path(root: Path, candidate: Path, *, allow_missing: bool) -> Path: + lexical_root = Path(root).absolute() + lexical_candidate = Path(candidate).absolute() + if not lexical_root.exists() or not lexical_root.is_dir(): + raise ValidationError(f"trusted storage root is missing: {lexical_root}") + if _is_reparse_point(lexical_root): + raise ValidationError(f"trusted storage root is a symlink/reparse point: {lexical_root}") + resolved_root = lexical_root.resolve(strict=True) + try: + relative = lexical_candidate.relative_to(lexical_root) + except ValueError as exc: + raise ValidationError(f"storage path escapes trusted root: {candidate}") from exc + current = lexical_root + for part in relative.parts: + current = current / part + if not current.exists(): + if allow_missing: + continue + raise ValidationError(f"storage path is missing: {current}") + if _is_reparse_point(current): + raise ValidationError(f"storage path contains a symlink/reparse point: {current}") + try: + current.resolve(strict=True).relative_to(resolved_root) + except ValueError as exc: + raise ValidationError(f"resolved storage path escapes trusted root: {current}") from exc + resolved_candidate = lexical_candidate.resolve(strict=not allow_missing) + try: + resolved_candidate.relative_to(resolved_root) + except ValueError as exc: + raise ValidationError(f"resolved storage path escapes trusted root: {candidate}") from exc + return lexical_candidate + + +def _safe_mkdir(root: Path, path: Path) -> Path: + checked = _validate_safe_path(root, path, allow_missing=True) + lock = Path(root) / ".capture-path-bootstrap.lock" + with process_file_lock(lock): + _validate_safe_path(root, lock, allow_missing=True) + checked.mkdir(parents=True, exist_ok=True) + return _validate_safe_path(root, checked, allow_missing=False) + + +def _fsync_directory(path: Path) -> None: + if os.name == "nt": + return + descriptor = os.open(path, os.O_RDONLY) + try: + os.fsync(descriptor) + finally: + os.close(descriptor) + + +def _atomic_immutable_write(path: Path, body: bytes, *, root: Path | None = None) -> None: + """Publish create-if-absent across processes; never replace an existing target.""" + + if root is None: + path.parent.mkdir(parents=True, exist_ok=True) + trusted_root = Path(root) if root is not None else path.parent + parent = _safe_mkdir(trusted_root, path.parent) + checked_path = _validate_safe_path(trusted_root, path, allow_missing=True) + temporary = parent / f".{path.name}.{uuid.uuid4().hex}.tmp" + _validate_safe_path(trusted_root, temporary, allow_missing=True) + expected_hash = hashlib.sha256(body).hexdigest() try: with temporary.open("xb") as stream: stream.write(body) stream.flush() os.fsync(stream.fileno()) - os.replace(temporary, path) + if _sha256_file(temporary) != expected_hash: + raise ValidationError(f"immutable staging hash mismatch: {temporary}") + _validate_safe_path(trusted_root, parent, allow_missing=False) + try: + os.link(temporary, checked_path) + _fsync_directory(parent) + except FileExistsError: + pass + _validate_safe_path(trusted_root, checked_path, allow_missing=False) + if not checked_path.is_file() or _sha256_file(checked_path) != expected_hash: + raise ValidationError( + f"immutable archive path already contains different bytes: {checked_path}" + ) finally: if temporary.exists(): temporary.unlink() +class DurableAuditStore: + """Low-frequency, immutable and independently reloadable state/audit journal.""" + + def __init__( + self, + hot_root: Path, + *, + stream_id: str, + connection_id: str, + collector_commit: str, + storage_guard: CaptureStorageGuard, + ) -> None: + self.hot_root = Path(hot_root) + self.stream_id = stream_id + self.connection_id = connection_id + self.collector_commit = collector_commit + self.storage_guard = storage_guard + stream_hash = hashlib.sha256(stream_id.encode("utf-8")).hexdigest()[:16] + self.root = ( + self.hot_root + / "capture" + / "durable-audit" + / f"stream={stream_hash}" + / f"connection={connection_id}" + ) + _safe_mkdir(self.hot_root, self.root) + self._previous_sha256: str | None = None + + def append(self, event: AuditEvent) -> AuditReference: + if event.stream_id != self.stream_id: + raise ValidationError("audit event stream identity mismatch") + identity = { + "schema_version": "puresaber.durable-capture-audit@1.0.0", + "stream_id": self.stream_id, + "connection_id": self.connection_id, + "collector_commit": self.collector_commit, + "ordinal": event.ordinal, + "previous_audit_sha256": self._previous_sha256, + "event": json.loads(event.payload()), + } + digest = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "audit_sha256": digest} + body = canonical_json_bytes(payload) + self.storage_guard.require_hot_capacity(projected_write_bytes=len(body) + 4096) + path = self.root / f"audit-{event.ordinal:012d}-sha256-{digest}.json" + _atomic_immutable_write(path, body, root=self.hot_root) + loaded = self.load(path) + if loaded["audit_sha256"] != digest or loaded["ordinal"] != event.ordinal: + raise ValidationError("durable audit reload verification failed") + self._previous_sha256 = digest + return AuditReference(event.ordinal, digest, str(path)) + + def load(self, path: Path) -> Mapping[str, object]: + checked = _validate_safe_path(self.hot_root, path, allow_missing=False) + try: + payload = json.loads(checked.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError(f"durable audit is unreadable: {checked}") from exc + if not isinstance(payload, dict): + raise ValidationError("durable audit must be a JSON object") + digest = payload.get("audit_sha256") + identity = {key: value for key, value in payload.items() if key != "audit_sha256"} + if digest != hashlib.sha256(canonical_json_bytes(identity)).hexdigest(): + raise ValidationError("durable audit hash verification failed") + return MappingProxyType(payload) + + class LocalArchiveController: """Copy, hash, restore, and mark Raw segments without deleting hot data.""" @@ -544,14 +852,30 @@ def __init__( self.restore_root = Path(restore_root) self.storage_guard = storage_guard self.clock = clock + self._preflight_receipt: ArchivePreflightReceipt | None = None def preflight(self) -> ArchivePreflightReceipt: + for root, name in ( + (self.hot_root, "hot_root"), + (self.archive_root, "archive_root"), + (self.restore_root, "restore_root"), + ): + if not root.is_absolute() or not root.is_dir(): + raise CapturePausedError( + f"CAPTURE_PAUSED: {name} is missing or not absolute: {root}" + ) + try: + _validate_safe_path(root, root, allow_missing=False) + except ValidationError as exc: + raise CapturePausedError(f"CAPTURE_PAUSED: unsafe {name}: {exc}") from exc decision = self.storage_guard.require_preflight(projected_hot_bytes=4096) - if not self.restore_root.is_absolute() or not self.restore_root.is_dir(): - raise CapturePausedError( - f"CAPTURE_PAUSED: restore_root is missing or not absolute: {self.restore_root}" - ) assert decision.hot_identity is not None and decision.archive_identity is not None + try: + restore_identity = self.storage_guard.volume_identity(self.restore_root) + except Exception as exc: + raise CapturePausedError( + f"CAPTURE_PAUSED: restore volume identity unavailable: {type(exc).__name__}: {exc}" + ) from exc verified_at = utc_text(self.clock(), "archive preflight clock") probe_payload = canonical_json_bytes( { @@ -559,19 +883,23 @@ def preflight(self) -> ArchivePreflightReceipt: "verified_at": verified_at, "hot_identity": asdict(decision.hot_identity), "archive_identity": asdict(decision.archive_identity), + "restore_identity": asdict(restore_identity), } ) probe_hash = hashlib.sha256(probe_payload).hexdigest() self.storage_guard.require_archive_capacity(projected_write_bytes=len(probe_payload) + 4096) archive_probe = self.archive_root / "preflight" / f"sha256-{probe_hash}.bin" - _atomic_immutable_write(archive_probe, probe_payload) + _atomic_immutable_write(archive_probe, probe_payload, root=self.archive_root) + self._assert_identity(self.archive_root, decision.archive_identity, "archive_root") restore_dir = Path(tempfile.mkdtemp(prefix="qdk-archive-preflight-", dir=self.restore_root)) try: + _validate_safe_path(self.restore_root, restore_dir, allow_missing=False) restored = restore_dir / "probe.bin" shutil.copy2(archive_probe, restored) + _validate_safe_path(self.restore_root, restored, allow_missing=False) restored_hash = _sha256_file(restored) finally: - shutil.rmtree(restore_dir) + self._remove_restore_temp(restore_dir) if restored_hash != probe_hash: raise CapturePausedError("CAPTURE_PAUSED: archive preflight restore hash mismatch") receipt_payload = { @@ -579,24 +907,34 @@ def preflight(self) -> ArchivePreflightReceipt: "verified_at": verified_at, "hot_identity": asdict(decision.hot_identity), "archive_identity": asdict(decision.archive_identity), + "restore_identity": asdict(restore_identity), "probe_sha256": probe_hash, "restored_sha256": restored_hash, } receipt_path = self.hot_root / "capture" / "archive-preflight" / f"{probe_hash}.json" - _atomic_immutable_write(receipt_path, canonical_json_bytes(receipt_payload)) - return ArchivePreflightReceipt( + _atomic_immutable_write( + receipt_path, canonical_json_bytes(receipt_payload), root=self.hot_root + ) + receipt = ArchivePreflightReceipt( schema_version=receipt_payload["schema_version"], verified_at=verified_at, hot_identity=decision.hot_identity, archive_identity=decision.archive_identity, + restore_identity=restore_identity, probe_sha256=probe_hash, restored_sha256=restored_hash, receipt_path=str(receipt_path), ) + self._preflight_receipt = receipt + return receipt def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: - decision = self.storage_guard.require_preflight(projected_hot_bytes=4096) - assert decision.hot_identity is not None and decision.archive_identity is not None + preflight = self._preflight_receipt + if preflight is None: + raise CapturePausedError("CAPTURE_PAUSED: archive preflight was not completed") + self._assert_identity(self.hot_root, preflight.hot_identity, "hot_root") + self._assert_identity(self.archive_root, preflight.archive_identity, "archive_root") + self._assert_identity(self.restore_root, preflight.restore_identity, "restore_root") raw, payload = load_raw_object(self.hot_root, segment.raw_manifest.reference()) source_dir = self._hot_object_dir(raw) source_manifest_path = source_dir / "manifest.json" @@ -610,12 +948,22 @@ def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: / f"date={raw.collection_date}" / f"object={raw.object_id}" ) - _atomic_immutable_write(destination / raw.data_path, payload) - _atomic_immutable_write(destination / "manifest.json", source_manifest_path.read_bytes()) + _safe_mkdir(self.archive_root, destination) + self._assert_identity(self.archive_root, preflight.archive_identity, "archive_root") + _atomic_immutable_write(destination / raw.data_path, payload, root=self.archive_root) + self._assert_identity(self.archive_root, preflight.archive_identity, "archive_root") + _atomic_immutable_write( + destination / "manifest.json", + source_manifest_path.read_bytes(), + root=self.archive_root, + ) + self._assert_identity(self.archive_root, preflight.archive_identity, "archive_root") archive_content_hash = _sha256_file(destination / raw.data_path) archive_manifest_hash = _sha256_file(destination / "manifest.json") restore_dir = Path(tempfile.mkdtemp(prefix="qdk-segment-restore-", dir=self.restore_root)) try: + _validate_safe_path(self.restore_root, restore_dir, allow_missing=False) + self._assert_identity(self.restore_root, preflight.restore_identity, "restore_root") restored_payload = restore_dir / raw.data_path restored_manifest = restore_dir / "manifest.json" shutil.copy2(destination / raw.data_path, restored_payload) @@ -625,12 +973,14 @@ def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: restored_model = RawObjectManifest( **json.loads(restored_manifest.read_text(encoding="utf-8")) ) + self._assert_identity(self.archive_root, preflight.archive_identity, "archive_root") + self._assert_identity(self.restore_root, preflight.restore_identity, "restore_root") except (OSError, TypeError, json.JSONDecodeError) as exc: raise CapturePausedError( f"CAPTURE_PAUSED: archive restore validation failed: {type(exc).__name__}: {exc}" ) from exc finally: - shutil.rmtree(restore_dir) + self._remove_restore_temp(restore_dir) expected = ( raw.content_sha256, raw.content_sha256, @@ -656,10 +1006,10 @@ def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: "archive_manifest_file_sha256": archive_manifest_hash, "restored_content_sha256": restored_content_hash, "restored_manifest_file_sha256": restored_manifest_hash, - "hot_volume_identity": decision.hot_identity.identity, - "archive_volume_identity": decision.archive_identity.identity, - "hot_physical_devices": list(decision.hot_identity.physical_devices), - "archive_physical_devices": list(decision.archive_identity.physical_devices), + "hot_volume_identity": preflight.hot_identity.identity, + "archive_volume_identity": preflight.archive_identity.identity, + "hot_physical_devices": list(preflight.hot_identity.physical_devices), + "archive_physical_devices": list(preflight.archive_identity.physical_devices), "verified_at": utc_text(self.clock(), "archive verified_at"), "archive_restore_verified": True, "eligible_for_cleanup": True, @@ -673,15 +1023,38 @@ def archive_segment(self, segment: RawSegment) -> SegmentArchiveReceipt: / "archive-receipts" / (f"object={raw.object_id}-receipt={receipt_hash}.json") ) - _atomic_immutable_write(receipt_path, canonical_json_bytes(receipt_payload)) + _atomic_immutable_write( + receipt_path, canonical_json_bytes(receipt_payload), root=self.hot_root + ) return SegmentArchiveReceipt( **{ **receipt_payload, "hot_physical_devices": tuple(identity["hot_physical_devices"]), "archive_physical_devices": tuple(identity["archive_physical_devices"]), + "receipt_path": str(receipt_path), } ) + def _assert_identity(self, root: Path, expected: VolumeIdentity, root_name: str) -> None: + _validate_safe_path(root, root, allow_missing=False) + try: + actual = self.storage_guard.volume_identity(root) + except Exception as exc: + raise CapturePausedError( + f"CAPTURE_PAUSED: {root_name} identity recheck failed: {type(exc).__name__}: {exc}" + ) from exc + if actual != expected: + raise CapturePausedError( + f"CAPTURE_PAUSED: {root_name} physical identity changed since preflight: " + f"expected={expected}, actual={actual}" + ) + + def _remove_restore_temp(self, restore_dir: Path) -> None: + checked = _validate_safe_path(self.restore_root, restore_dir, allow_missing=False) + if checked.parent.resolve(strict=True) != self.restore_root.resolve(strict=True): + raise CapturePausedError("CAPTURE_PAUSED: restore temp escaped configured restore_root") + shutil.rmtree(checked) + def _hot_object_dir(self, raw: RawObjectManifest) -> Path: path = ( self.hot_root @@ -691,12 +1064,7 @@ def _hot_object_dir(self, raw: RawObjectManifest) -> Path: / f"key={raw.idempotency_key}" / f"object={raw.object_id}" ) - resolved = path.resolve(strict=True) - try: - resolved.relative_to(self.hot_root.resolve(strict=True)) - except ValueError as exc: - raise ValidationError("Raw object path escaped the hot root") from exc - return resolved + return _validate_safe_path(self.hot_root, path, allow_missing=False).resolve(strict=True) def iter_segment_frames(hot_root: Path, segment: RawSegment) -> Iterable[RawFrame]: diff --git a/tests/test_capture_v2_collector_cli_transport.py b/tests/test_capture_v2_collector_cli_transport.py index 45052ba..071a55b 100644 --- a/tests/test_capture_v2_collector_cli_transport.py +++ b/tests/test_capture_v2_collector_cli_transport.py @@ -588,7 +588,9 @@ def test_runner_fail_closed_internal_guards_and_raw_metadata(tmp_path: Path) -> assert event_time == NOW and sequences == {"U": 1, "u": 2} -def test_unverified_archive_receipt_pauses_before_lineage(tmp_path: Path) -> None: +def test_unverified_archive_receipt_pauses_before_lineage( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: capture_config, streams = config(tmp_path, attempts=1) guard = storage_guard(capture_config.hot_root, capture_config.archive_root) archive = LocalArchiveController( @@ -620,7 +622,7 @@ class UnverifiedArchive: def archive_segment(self, _segment) -> UnverifiedReceipt: return UnverifiedReceipt() - runner.segment_writer.flush() + monkeypatch.setattr(runner.segment_writer, "peek_completed", lambda: (object(),)) runner.archive = UnverifiedArchive() # type: ignore[assignment] with pytest.raises(CapturePausedError, match="not restore-verified"): runner._drain_segments() diff --git a/tests/test_capture_v2_models_storage.py b/tests/test_capture_v2_models_storage.py index 223110c..1841ec8 100644 --- a/tests/test_capture_v2_models_storage.py +++ b/tests/test_capture_v2_models_storage.py @@ -12,6 +12,8 @@ M7_CAPABILITIES, M7_PROVIDERS, AuditEvent, + AuditPersistenceError, + AuditReference, CaptureConfig, CaptureState, CaptureStateMachine, @@ -262,14 +264,19 @@ def test_raw_frame_round_trip_and_monotonic_clock() -> None: def test_state_machine_audits_legal_illegal_and_sink_failure() -> None: stream = default_crypto_l2_streams()[0] clock = FakeClock() - frames: list[RawFrame] = [] + persisted: list[AuditEvent] = [] alerts: list[str] = [] + + def persist(event: AuditEvent) -> AuditReference: + persisted.append(event) + return AuditReference(event.ordinal, "a" * 64, f"audit-{event.ordinal}.json") + machine = CaptureStateMachine( stream, connection_id="one", collector_commit="abc", clock=clock, - audit_sink=frames.append, + audit_sink=persist, alert_sink=alerts.append, ) machine.transition(CaptureState.BUFFERING, "connected") @@ -279,15 +286,20 @@ def test_state_machine_audits_legal_illegal_and_sink_failure() -> None: machine.transition(CaptureState.RESYNC, "gap") machine.transition(CaptureState.CONNECTING, "retry") machine.transition(CaptureState.PAUSED, "operator") - assert len(frames) == len(machine.events) == 8 + assert len(persisted) == len(machine.events) == 8 assert isinstance(machine.events[0], AuditEvent) - assert RawFrame.from_record(frames[0].record()).payload == frames[0].payload with pytest.raises(ValidationError, match="illegal"): machine.transition(CaptureState.LIVE, "invalid") assert alerts[-1].startswith("ILLEGAL_CAPTURE_TRANSITION") - def failed_sink(_frame: RawFrame) -> None: - raise OSError("disk full") + calls = 0 + + def failed_sink(event: AuditEvent) -> AuditReference: + nonlocal calls + calls += 1 + if calls > 1: + raise OSError("disk full") + return AuditReference(event.ordinal, "b" * 64, "first.json") failed = CaptureStateMachine( stream, @@ -297,7 +309,10 @@ def failed_sink(_frame: RawFrame) -> None: audit_sink=failed_sink, alert_sink=alerts.append, ) - assert failed.events + with pytest.raises(AuditPersistenceError, match="before state commit"): + failed.transition(CaptureState.BUFFERING, "must-not-commit") + assert failed.state is CaptureState.CONNECTING + assert len(failed.events) == 1 assert any(item.startswith("AUDIT_PERSISTENCE_FAILED") for item in alerts) @@ -463,6 +478,7 @@ def wrong_restore_hash(path: Path) -> str: return real_hash(path) monkeypatch.setattr(storage_module, "_sha256_file", wrong_restore_hash) + controller.preflight() with pytest.raises(CapturePausedError, match="hash validation"): controller.archive_segment(segment) @@ -522,11 +538,11 @@ def test_storage_negative_capacity_rotation_and_immutable_paths( failed_target = tmp_path / "immutable" / "replace-failure.bin" - def replace_failed(_source: Path, _target: Path) -> None: - raise OSError("injected atomic replace failure") + def link_failed(_source: Path, _target: Path) -> None: + raise OSError("injected atomic link failure") - monkeypatch.setattr(storage_module.os, "replace", replace_failed) - with pytest.raises(OSError, match="atomic replace"): + monkeypatch.setattr(storage_module.os, "link", link_failed) + with pytest.raises(OSError, match="atomic link"): storage_module._atomic_immutable_write(failed_target, b"temporary") assert not tuple(failed_target.parent.glob(".replace-failure.bin.*.tmp")) @@ -675,4 +691,4 @@ def respond( monkeypatch.setattr(Path, "is_symlink", lambda self: self == hot or real_is_symlink(self)) decision = guard(hot, archive).preflight() assert not decision.allowed - assert "symbolic link" in (decision.alert or "") + assert "symlink/reparse" in (decision.alert or "") diff --git a/tests/test_capture_v2_remediation.py b/tests/test_capture_v2_remediation.py new file mode 100644 index 0000000..0a8717e --- /dev/null +++ b/tests/test_capture_v2_remediation.py @@ -0,0 +1,1256 @@ +from __future__ import annotations + +import asyncio +import hashlib +import json +import multiprocessing +import threading +from concurrent.futures import ThreadPoolExecutor +from dataclasses import replace +from pathlib import Path + +import pytest + +import quant_data_kit.capture_v2.collector as collector_module +import quant_data_kit.capture_v2.epoch as epoch_module +import quant_data_kit.capture_v2.storage as storage_module +from quant_data_kit.capture_v2.collector import CaptureStreamRunner, CryptoL2CaptureCoordinator +from quant_data_kit.capture_v2.epoch import NormalizedEpochJournal +from quant_data_kit.capture_v2.models import ( + AuditEvent, + AuditPersistenceError, + CaptureState, + CaptureStateMachine, + Provider, + SegmentRotation, + SymbolMappingResolver, + assert_m7_scope, + default_crypto_l2_streams, + default_symbol_mappings, +) +from quant_data_kit.capture_v2.storage import ( + CapturePausedError, + CaptureStorageGuard, + DiskCapacity, + DurableAuditStore, + LocalArchiveController, + RawSegmentWriter, + VolumeIdentity, +) +from quant_data_kit.exceptions import ProviderError, ValidationError +from tests import test_capture_v2_collector_cli_transport as collector_fixtures +from tests import test_capture_v2_models_storage as storage_fixtures +from tests import test_capture_v2_synchronizers_epoch as epoch_fixtures + + +def _process_publish( + root_text: str, + target_text: str, + body: bytes, + start: multiprocessing.synchronize.Event, + results: multiprocessing.queues.Queue, +) -> None: + start.wait(10) + try: + storage_module._atomic_immutable_write(Path(target_text), body, root=Path(root_text)) + except Exception as exc: # noqa: BLE001 - child returns exact race result + results.put(f"{type(exc).__name__}:{exc}") + else: + results.put("ok") + + +def test_durable_audit_commits_before_state_and_reloads(tmp_path: Path) -> None: + hot, archive, _restore = collector_fixtures.roots(tmp_path) + guard = collector_fixtures.storage_guard(hot, archive) + guard.require_preflight() + stream = default_crypto_l2_streams()[0] + clock = collector_fixtures.FakeClock() + store = DurableAuditStore( + hot, + stream_id=stream.stream_id, + connection_id="durable-one", + collector_commit="abc123", + storage_guard=guard, + ) + machine = CaptureStateMachine( + stream, + connection_id="durable-one", + collector_commit="abc123", + clock=clock, + audit_sink=store.append, + ) + machine.transition(CaptureState.BUFFERING, "connected") + assert len(machine.events) == len(machine.references) == 2 + for reference in machine.references: + payload = store.load(Path(reference.audit_path)) + assert payload["audit_sha256"] == reference.audit_sha256 + + original = store.append + + def fail_after_initial(event): + if event.ordinal == 3: + raise OSError("injected durable audit failure") + return original(event) + + machine.audit_sink = fail_after_initial + with pytest.raises(AuditPersistenceError, match="before state commit"): + machine.transition(CaptureState.SNAPSHOT_SYNC, "must-fail-closed") + assert machine.state is CaptureState.BUFFERING + assert len(machine.events) == len(machine.references) == 2 + + +def test_illegal_transition_is_durable_and_failed_illegal_audit_is_not_counted( + tmp_path: Path, +) -> None: + hot, archive, _restore = collector_fixtures.roots(tmp_path) + guard = collector_fixtures.storage_guard(hot, archive) + guard.require_preflight() + stream = default_crypto_l2_streams()[0] + store = DurableAuditStore( + hot, + stream_id=stream.stream_id, + connection_id="illegal-one", + collector_commit="abc123", + storage_guard=guard, + ) + machine = CaptureStateMachine( + stream, + connection_id="illegal-one", + collector_commit="abc123", + clock=collector_fixtures.FakeClock(), + audit_sink=store.append, + ) + with pytest.raises(ValidationError, match="illegal"): + machine.transition(CaptureState.LIVE, "skip-sync") + assert machine.state is CaptureState.CONNECTING + assert machine.events[-1].event == "illegal_transition" + durable_count = len(machine.events) + machine.audit_sink = lambda _event: (_ for _ in ()).throw(OSError("audit unavailable")) + with pytest.raises(AuditPersistenceError): + machine.transition(CaptureState.LIVE, "still-illegal") + assert len(machine.events) == durable_count + + +def test_default_hot_path_amortizes_tree_capacity_and_fsync_probes( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, archive, _restore = collector_fixtures.roots(tmp_path) + counts = {"capacity": 0, "tree": 0, "fsync": 0} + + def capacity(_path: Path) -> DiskCapacity: + counts["capacity"] += 1 + return DiskCapacity(10 * 1024**3, 9 * 1024**3) + + def tree(_path: Path) -> int: + counts["tree"] += 1 + return 0 + + guard = CaptureStorageGuard( + hot, + archive, + policy=collector_fixtures.POLICY, + archive_reserve_bytes=1, + volume_identity=collector_fixtures.distinct_identity, + capacity_probe=capacity, + hot_size_probe=tree, + ) + guard.require_preflight() + stream = default_crypto_l2_streams()[0] + writer = RawSegmentWriter( + hot, + stream.stream_id, + stream.provider.value, + collector_commit="abc123", + rotation=SegmentRotation( + max_messages=2_000, max_wire_bytes=64 * 1024**2, max_age_seconds=100_000 + ), + storage_guard=guard, + policy=collector_fixtures.POLICY, + ) + original_fsync = storage_module.os.fsync + + def counted_fsync(descriptor: int) -> None: + counts["fsync"] += 1 + original_fsync(descriptor) + + monkeypatch.setattr(storage_module.os, "fsync", counted_fsync) + for index in range(1, 1_001): + writer.append(storage_fixtures.raw_frame(stream, index)) + assert writer.pending_messages == 1_000 + assert counts["tree"] <= 5 + assert counts["capacity"] <= 6 + assert counts["fsync"] == 0 + statistics = guard.probe_statistics + assert statistics["hot_reservations"] == 1_000 + assert statistics["maximum_unprobed_bytes"] == 4 * 1024 * 1024 + + +def test_normalized_append_uses_bounded_fsync_batches( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, _archive, guard = epoch_fixtures.storage(tmp_path) + calls = 0 + original = epoch_module.os.fsync + + def counted(descriptor: int) -> None: + nonlocal calls + calls += 1 + original(descriptor) + + monkeypatch.setattr(epoch_module.os, "fsync", counted) + journal = NormalizedEpochJournal( + hot, + epoch_id="batched-fsync", + stream_id="stream-one", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + journal.append({"value": index} for index in range(1_000)) + assert calls == 3 + journal.abort_visible("test-complete") + assert calls > 3 + + +def _journal_with_lineage(tmp_path: Path, epoch_id: str) -> NormalizedEpochJournal: + tmp_path.mkdir(parents=True, exist_ok=True) + hot, _archive, guard = epoch_fixtures.storage(tmp_path) + config = epoch_fixtures.stream(Provider.BINANCE, epoch_fixtures.MarketKind.SPOT) + writer = RawSegmentWriter( + hot, + config.stream_id, + config.provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + writer.append(epoch_fixtures.frame(config, {"raw": 1}, 1)) + writer.append(epoch_fixtures.frame(config, {"raw": 2}, 2)) + segment = writer.drain_completed()[0] + sync = epoch_fixtures.BinanceBookSynchronizer(config, epoch_fixtures.resolver()) + records = list(sync.admit_snapshot(epoch_fixtures.binance_snapshot(config)).records) + records.extend(sync.admit_update(epoch_fixtures.binance_update(config, 100, 101)).records) + journal = NormalizedEpochJournal( + hot, + epoch_id=epoch_id, + stream_id=config.stream_id, + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + max_part_rows=1, + ) + journal.append(records) + journal.record_segment(segment) + return journal + + +def test_normalized_finalize_publish_failure_retains_journal_and_retries( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path, "publish-retry") + original = journal._publish_normalized + calls = 0 + + def fail_once(): + nonlocal calls + calls += 1 + if calls == 1: + raise OSError("injected publish failure") + return original() + + monkeypatch.setattr(journal, "_publish_normalized", fail_once) + with pytest.raises(OSError, match="publish failure"): + journal.finalize(created_at=epoch_fixtures.NOW) + assert tuple(journal.root.glob("finalize-failure-*.json")) + receipt = journal.finalize(created_at=epoch_fixtures.NOW) + assert receipt.normalized_snapshot_id and Path(receipt.receipt_path).is_file() + + +def test_normalized_receipt_failure_abort_failure_and_process_recovery( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path / "recoverable", "receipt-recovery") + original_publish = epoch_module._atomic_immutable_write + failed = False + + def receipt_fails_once(path: Path, body: bytes, *, root: Path | None = None) -> None: + nonlocal failed + if path.name.startswith("receipt-") and not failed: + failed = True + raise OSError("injected receipt publish failure") + original_publish(path, body, root=root) + + monkeypatch.setattr(epoch_module, "_atomic_immutable_write", receipt_fails_once) + with pytest.raises(OSError, match="receipt publish"): + journal.finalize(created_at=epoch_fixtures.NOW) + journal._open_stream.close() + recovered = NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + receipt = recovered.finalize(created_at=epoch_fixtures.NOW) + assert Path(receipt.receipt_path).is_file() + + broken = _journal_with_lineage(tmp_path / "double", "double-failure") + monkeypatch.setattr( + broken, "_publish_normalized", lambda: (_ for _ in ()).throw(OSError("publish")) + ) + + def failure_record_fails(path: Path, body: bytes, *, root: Path | None = None) -> None: + if path.name.startswith("finalize-failure-"): + raise OSError("abort audit") + original_publish(path, body, root=root) + + monkeypatch.setattr(epoch_module, "_atomic_immutable_write", failure_record_fails) + with pytest.raises( + ValidationError, match="primary=OSError: publish.*audit=OSError: abort audit" + ): + broken.finalize(created_at=epoch_fixtures.NOW) + assert broken._state == "OPEN" + + +def test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains() -> None: + streams = default_crypto_l2_streams() + sample = streams[0] + cases = ( + tuple(replace(item, native_symbol="BTCFAKE") for item in streams), + (*streams[:-1], streams[-2]), + tuple( + replace(item, websocket_url="wss://stream.binance.com.evil.invalid/ws/x") + if item == sample + else item + for item in streams + ), + tuple( + replace(item, market=epoch_fixtures.MarketKind.USDT_PERPETUAL) + if item == sample + else item + for item in streams + ), + ) + for candidate in cases: + with pytest.raises(ValidationError): + assert_m7_scope(candidate) + + +def test_atomic_immutable_publish_is_thread_and_process_race_safe(tmp_path: Path) -> None: + root = tmp_path / "immutable-root" + root.mkdir() + same = root / "same.bin" + barrier = threading.Barrier(8) + + def publish_same() -> None: + barrier.wait() + storage_module._atomic_immutable_write(same, b"same", root=root) + + with ThreadPoolExecutor(max_workers=8) as pool: + tuple(pool.map(lambda _index: publish_same(), range(8))) + assert same.read_bytes() == b"same" + + context = multiprocessing.get_context("spawn") + start = context.Event() + results = context.Queue() + target = root / "process-race.bin" + processes = [ + context.Process( + target=_process_publish, + args=(str(root), str(target), body, start, results), + ) + for body in (b"first", b"second") + ] + for process in processes: + process.start() + start.set() + for process in processes: + process.join(20) + assert process.exitcode == 0 + outcomes = sorted(results.get(timeout=5) for _ in processes) + assert outcomes.count("ok") == 1 + assert sum(item.startswith("ValidationError:") for item in outcomes) == 1 + assert target.read_bytes() in {b"first", b"second"} + + +def test_archive_rejects_identity_change_and_reparse_final_parent( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + capture_config, streams = collector_fixtures.config(tmp_path) + changed = False + + def identity(path: Path) -> VolumeIdentity: + base = collector_fixtures.distinct_identity(path) + if changed and path == capture_config.archive_root: + return VolumeIdentity("changed", ("changed-device",)) + return base + + guard = collector_fixtures.storage_guard( + capture_config.hot_root, capture_config.archive_root, identity=identity + ) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + archive.preflight() + writer = RawSegmentWriter( + capture_config.hot_root, + streams[0].stream_id, + streams[0].provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=guard, + policy=collector_fixtures.POLICY, + ) + writer.append(storage_fixtures.raw_frame(streams[0], 1)) + writer.append(storage_fixtures.raw_frame(streams[0], 2)) + segment = writer.drain_completed()[0] + changed = True + with pytest.raises(CapturePausedError, match="identity changed"): + archive.archive_segment(segment) + + changed = False + real_reparse = storage_module._is_reparse_point + monkeypatch.setattr( + storage_module, + "_is_reparse_point", + lambda path: path.name == "raw-segments" or real_reparse(path), + ) + with pytest.raises(ValidationError, match="reparse"): + archive.archive_segment(segment) + + +def test_probe_budget_covers_okx_control_frames_without_snapshot(tmp_path: Path) -> None: + capture_config, streams = collector_fixtures.config(tmp_path, attempts=1) + stream = next(item for item in streams if item.provider is Provider.OKX) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + archive.preflight() + + class ControlOnlyConnection(collector_fixtures.FakeConnection): + def __init__(self, selected) -> None: + super().__init__(selected) + self.messages = [ + json.dumps({"event": "subscribe", "code": "0", "msg": ""}).encode() + for _ in range(3) + ] + + class Connector: + async def connect(self, _url: str, *, timeout_seconds: float): + assert timeout_seconds > 0 + return ControlOnlyConnection(stream) + + runner = CaptureStreamRunner( + capture_config, + stream, + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=collector_fixtures.FakeHttp(), + websockets=Connector(), + clock=collector_fixtures.FakeClock(), + jitter=lambda: 0.5, + alert_sink=lambda _message: None, + policy=collector_fixtures.POLICY, + ) + report = asyncio.run(runner.run(maximum_websocket_messages=3)) + assert report.outcome == "FAILED" + assert report.websocket_messages == 3 + assert any("budget exhausted" in item for item in report.errors) + assert report.audit_events == len(report.audit_references) > 0 + + +def test_cancel_flushes_archives_aborts_and_persists_paused(tmp_path: Path) -> None: + capture_config, streams = collector_fixtures.config(tmp_path, attempts=1) + stream = next( + item + for item in streams + if item.provider is Provider.BINANCE and item.market is epoch_fixtures.MarketKind.SPOT + ) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + archive.preflight() + + async def exercise() -> CaptureStreamRunner: + blocked = asyncio.Event() + + class BlockingConnection(collector_fixtures.FakeConnection): + async def receive(self, *, timeout_seconds: float) -> bytes: + if self.messages: + return self.messages.pop(0) + blocked.set() + await asyncio.Event().wait() + raise AssertionError("unreachable") + + connection = BlockingConnection(stream) + + class Connector: + async def connect(self, _url: str, *, timeout_seconds: float): + return connection + + runner = CaptureStreamRunner( + capture_config, + stream, + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=collector_fixtures.FakeHttp(), + websockets=Connector(), + clock=collector_fixtures.FakeClock(), + jitter=lambda: 0.5, + alert_sink=lambda _message: None, + policy=collector_fixtures.POLICY, + ) + task = asyncio.create_task(runner.run(maximum_websocket_messages=None)) + await asyncio.wait_for(blocked.wait(), timeout=5) + task.cancel() + with pytest.raises(asyncio.CancelledError): + await task + return runner + + runner = asyncio.run(exercise()) + report = runner._last_report + assert report is not None and report.outcome == "CANCELLED" + assert report.final_state == CaptureState.PAUSED.value + assert report.pending_raw_messages == report.pending_raw_segments == 0 + assert report.raw_segments == report.archived_segments > 0 + assert report.epoch_aborts + assert Path(report.epoch_aborts[0]).is_file() + paused = json.loads(Path(report.audit_references[-1]).read_text(encoding="utf-8")) + assert paused["event"]["to_state"] == CaptureState.PAUSED.value + + +def test_coordinator_cancels_peer_streams_and_still_persists_eight_failures( + tmp_path: Path, +) -> None: + capture_config, streams = collector_fixtures.config(tmp_path, attempts=1) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + + class MixedConnector: + async def connect(self, url: str, *, timeout_seconds: float): + if url == streams[0].websocket_url: + raise ProviderError("injected first-stream failure") + + class Blocked: + async def send(self, _payload: bytes) -> None: + return None + + async def receive(self, *, timeout_seconds: float) -> bytes: + await asyncio.Event().wait() + raise AssertionError("unreachable") + + async def close(self) -> None: + return None + + return Blocked() + + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=archive, + http=collector_fixtures.FakeHttp(), + websockets=MixedConnector(), + clock=collector_fixtures.FakeClock(), + jitter=lambda: 0.5, + policy=collector_fixtures.POLICY, + ) + report = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert report.status == "CAPTURE_FAILED" + assert len(report.streams) == 8 + assert all(item.outcome in {"FAILED", "CANCELLED"} for item in report.streams) + assert report.report_path and Path(report.report_path).is_file() + payload = json.loads(Path(report.report_path).read_text(encoding="utf-8")) + assert payload["collector_commit"] == capture_config.collector_commit + assert payload["audit_reference_sha256"] == report.audit_reference_sha256 + + +def test_preflight_report_uses_honest_zero_audit_and_report_publish_fails_closed( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + capture_config, _streams = collector_fixtures.config(tmp_path) + same = lambda _path: VolumeIdentity("same", ("same-device",)) + guard = collector_fixtures.storage_guard( + capture_config.hot_root, capture_config.archive_root, identity=same + ) + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ), + clock=collector_fixtures.FakeClock(), + policy=collector_fixtures.POLICY, + ) + report = coordinator.preflight_only() + assert all(item.audit_events == 0 and not item.audit_references for item in report.streams) + assert report.collector_commit == capture_config.collector_commit + + monkeypatch.setattr( + collector_module, + "_atomic_immutable_write", + lambda *_args, **_kwargs: (_ for _ in ()).throw(OSError("report disk failure")), + ) + failed = coordinator.preflight_only() + assert failed.status == "CAPTURE_REPORT_PERSISTENCE_FAILED" + assert failed.report_path is None + + +def test_storage_guard_path_audit_and_incremental_negative_branches( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, archive, _restore = collector_fixtures.roots(tmp_path) + with pytest.raises(ValidationError, match="probe intervals"): + CaptureStorageGuard(hot, archive, probe_messages=0) + guard = collector_fixtures.storage_guard(hot, archive) + guard.require_preflight() + with pytest.raises(ValidationError, match="cannot be negative"): + guard.require_hot_capacity(projected_write_bytes=-1) + with pytest.raises(ValidationError, match="cannot be negative"): + guard.require_archive_capacity(projected_write_bytes=-1) + with pytest.raises(CapturePausedError): + guard.require_hot_capacity(projected_write_bytes=2 * 1024**3) + with pytest.raises(CapturePausedError, match="archive free-space floor"): + guard.require_archive_capacity(projected_write_bytes=2 * 1024**3) + guard.force_hot_probe() + + with pytest.raises(ValidationError, match="root is missing"): + storage_module._validate_safe_path( + tmp_path / "missing-root", tmp_path / "missing-root" / "x", allow_missing=True + ) + with pytest.raises(ValidationError, match="escapes trusted root"): + storage_module._validate_safe_path(hot, archive / "escape", allow_missing=True) + with pytest.raises(ValidationError, match="path is missing"): + storage_module._validate_safe_path(hot, hot / "missing", allow_missing=False) + assert storage_module._is_reparse_point(hot / "does-not-exist") is False + + target = hot / "hash-mismatch.bin" + real_hash = storage_module._sha256_file + + def wrong_staging_hash(path: Path) -> str: + if path.name.endswith(".tmp"): + return "0" * 64 + return real_hash(path) + + monkeypatch.setattr(storage_module, "_sha256_file", wrong_staging_hash) + with pytest.raises(ValidationError, match="staging hash mismatch"): + storage_module._atomic_immutable_write(target, b"body", root=hot) + monkeypatch.setattr(storage_module, "_sha256_file", real_hash) + + stream = default_crypto_l2_streams()[0] + store = DurableAuditStore( + hot, + stream_id=stream.stream_id, + connection_id="negative-audit", + collector_commit="abc", + storage_guard=guard, + ) + wrong_event = AuditEvent( + ordinal=1, + stream_id="wrong-stream", + occurred_at=collector_fixtures.NOW, + event="state_transition", + from_state=None, + to_state=CaptureState.CONNECTING, + reason="test", + ) + with pytest.raises(ValidationError, match="stream identity"): + store.append(wrong_event) + malformed = store.root / "malformed.json" + malformed.write_text("{", encoding="utf-8") + with pytest.raises(ValidationError, match="unreadable"): + store.load(malformed) + scalar = store.root / "scalar.json" + scalar.write_text("[]", encoding="utf-8") + with pytest.raises(ValidationError, match="JSON object"): + store.load(scalar) + changed = store.root / "changed.json" + changed.write_text(json.dumps({"audit_sha256": "0" * 64}), encoding="utf-8") + with pytest.raises(ValidationError, match="hash verification"): + store.load(changed) + + +def test_storage_ack_reload_identity_and_restore_parent_fail_closed( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + capture_config, streams = collector_fixtures.config(tmp_path) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + writer = RawSegmentWriter( + capture_config.hot_root, + streams[0].stream_id, + streams[0].provider.value, + collector_commit="abc", + rotation=SegmentRotation(max_messages=2), + storage_guard=guard, + policy=collector_fixtures.POLICY, + ) + with pytest.raises(ValidationError, match="out of order"): + writer.acknowledge_completed(object()) # type: ignore[arg-type] + + guard.require_preflight() + store = DurableAuditStore( + capture_config.hot_root, + stream_id=streams[0].stream_id, + connection_id="reload-mismatch", + collector_commit="abc", + storage_guard=guard, + ) + event = AuditEvent( + ordinal=1, + stream_id=streams[0].stream_id, + occurred_at=collector_fixtures.NOW, + event="state_transition", + from_state=None, + to_state=CaptureState.CONNECTING, + reason="test", + ) + monkeypatch.setattr( + store, + "load", + lambda _path: {"audit_sha256": "wrong", "ordinal": event.ordinal}, + ) + with pytest.raises(ValidationError, match="reload verification"): + store.append(event) + + controller = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + controller.preflight() + monkeypatch.setattr( + guard, + "volume_identity", + lambda _path: (_ for _ in ()).throw(OSError("identity probe failed")), + ) + with pytest.raises(CapturePausedError, match="identity recheck failed"): + controller._assert_identity( + capture_config.archive_root, + collector_fixtures.distinct_identity(capture_config.archive_root), + "archive_root", + ) + nested = capture_config.restore_root / "nested" + nested.mkdir() + restore_temp = nested / "temp" + restore_temp.mkdir() + with pytest.raises(CapturePausedError, match="escaped configured restore_root"): + controller._remove_restore_temp(restore_temp) + assert restore_temp.is_dir() + + +def test_epoch_recovery_and_abort_negative_branches( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + empty_root = tmp_path / "empty" + empty_root.mkdir() + hot, _archive, guard = epoch_fixtures.storage(empty_root) + empty = NormalizedEpochJournal( + hot, + epoch_id="empty-flush", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + empty.flush() + empty.abort_visible("first") + with pytest.raises(ValidationError, match="already aborted"): + empty.abort_visible("second") + with pytest.raises(ValidationError, match="not a retryable"): + NormalizedEpochJournal.recover( + hot, + epoch_id="missing", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + + finalized = _journal_with_lineage(tmp_path / "finalized", "done") + finalized.finalize(created_at=epoch_fixtures.NOW) + with pytest.raises(ValidationError, match="not a retryable"): + NormalizedEpochJournal.recover( + finalized.hot_root, + epoch_id=finalized.epoch_id, + stream_id=finalized.stream_id, + provider=finalized.provider, + venue=finalized.venue, + storage_guard=finalized.storage_guard, + policy=finalized.policy, + ) + + mismatch = _journal_with_lineage(tmp_path / "mismatch", "mismatch") + monkeypatch.setattr( + mismatch, + "_publish_normalized", + lambda: (_ for _ in ()).throw(OSError("publish")), + ) + with pytest.raises(OSError): + mismatch.finalize(created_at=epoch_fixtures.NOW) + failure_path = next(mismatch.root.glob("finalize-failure-*.json")) + payload = json.loads(failure_path.read_text(encoding="utf-8")) + payload["failure_sha256"] = "0" * 64 + failure_path.write_text(json.dumps(payload), encoding="utf-8") + with pytest.raises(ValidationError, match="failure record hash changed"): + NormalizedEpochJournal.recover( + mismatch.hot_root, + epoch_id=mismatch.epoch_id, + stream_id=mismatch.stream_id, + provider=mismatch.provider, + venue=mismatch.venue, + storage_guard=mismatch.storage_guard, + policy=mismatch.policy, + ) + + +def _runner_for_negative_test(tmp_path: Path) -> CaptureStreamRunner: + tmp_path.mkdir(parents=True, exist_ok=True) + capture_config, streams = collector_fixtures.config(tmp_path, attempts=1) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + archive.preflight() + return CaptureStreamRunner( + capture_config, + streams[0], + storage_guard=guard, + archive=archive, + mappings=SymbolMappingResolver(default_symbol_mappings(streams)), + http=collector_fixtures.FakeHttp(), + websockets=collector_fixtures.FakeConnector((streams[0],)), + clock=collector_fixtures.FakeClock(), + jitter=lambda: 0.5, + alert_sink=lambda _message: None, + policy=collector_fixtures.POLICY, + ) + + +def test_collector_deadline_malformed_snapshot_and_internal_guards(tmp_path: Path) -> None: + runner = _runner_for_negative_test(tmp_path) + runner._probe_message_limit = 3 + runner._probe_deadline = 0 + runner.monotonic = lambda: 1 + + class NeverReceive: + async def receive(self, *, timeout_seconds: float) -> bytes: + raise AssertionError("deadline must fail before receive") + + with pytest.raises(ValidationError, match="timeout exhausted"): + asyncio.run(runner._receive_frame(NeverReceive())) # type: ignore[arg-type] + malformed_snapshot = runner._https_frame(b"{}", "https://api.binance.com", event_time=None) + assert dict(malformed_snapshot.native_sequence) == {} + with pytest.raises(ValidationError, match="not initialized"): + runner._apply_outcome(collector_module.NormalizationOutcome()) + runner._new_epoch() + with pytest.raises(ValidationError, match="previous Normalized epoch"): + runner._new_epoch() + runner._finalize_epoch(abort_reason="test") + runner._pause("first", ValueError("injected")) + event_count = len(runner.state.events) + runner._pause("already-paused") + assert len(runner.state.events) == event_count + + +def test_runner_audit_failure_and_coordinator_run_preflight_failure(tmp_path: Path) -> None: + runner = _runner_for_negative_test(tmp_path / "runner") + runner.state.audit_sink = lambda _event: (_ for _ in ()).throw(OSError("audit disk full")) + report = asyncio.run(runner.run(maximum_websocket_messages=3)) + assert report.outcome == "FAILED" + assert report.audit_failures > 0 + assert report.final_state == CaptureState.CONNECTING.value + + coordinator_root = tmp_path / "coordinator" + coordinator_root.mkdir() + capture_config, _streams = collector_fixtures.config(coordinator_root) + same = lambda _path: VolumeIdentity("same", ("same-device",)) + guard = collector_fixtures.storage_guard( + capture_config.hot_root, capture_config.archive_root, identity=same + ) + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ), + clock=collector_fixtures.FakeClock(), + policy=collector_fixtures.POLICY, + ) + failed = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert failed.status == "PAUSED_PREFLIGHT_FAILED" + assert all(item.audit_events == 0 for item in failed.streams) + + +def test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + exception_root = tmp_path / "exception" + exception_root.mkdir() + capture_config, _streams = collector_fixtures.config(exception_root, attempts=1) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + + async def unhandled(self, *, maximum_websocket_messages): + if self.stream == capture_config.streams[0]: + raise RuntimeError("unhandled finalize failure") + await asyncio.Event().wait() + + monkeypatch.setattr(CaptureStreamRunner, "run", unhandled) + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=archive, + clock=collector_fixtures.FakeClock(), + policy=collector_fixtures.POLICY, + ) + report = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert report.status == "CAPTURE_FAILED" and len(report.streams) == 8 + assert any("unhandled finalize" in "".join(item.errors) for item in report.streams) + + monkeypatch.undo() + cancel_root = tmp_path / "cancel" + cancel_root.mkdir() + cancel_config, _ = collector_fixtures.config(cancel_root, attempts=1) + cancel_guard = collector_fixtures.storage_guard( + cancel_config.hot_root, cancel_config.archive_root + ) + cancel_archive = LocalArchiveController( + cancel_config.hot_root, + cancel_config.archive_root, + cancel_config.restore_root, + storage_guard=cancel_guard, + ) + connected = asyncio.Event() + + class BlockingConnector: + async def connect(self, _url: str, *, timeout_seconds: float): + connected.set() + await asyncio.Event().wait() + + cancel_coordinator = CryptoL2CaptureCoordinator( + cancel_config, + storage_guard=cancel_guard, + archive=cancel_archive, + websockets=BlockingConnector(), + clock=collector_fixtures.FakeClock(), + policy=collector_fixtures.POLICY, + ) + + async def cancel_outer() -> None: + task = asyncio.create_task(cancel_coordinator.run(maximum_websocket_messages=3)) + await asyncio.wait_for(connected.wait(), timeout=5) + task.cancel() + with pytest.raises(asyncio.CancelledError): + await task + + asyncio.run(cancel_outer()) + reports = tuple((cancel_config.hot_root / "capture" / "run-reports").glob("*.json")) + assert reports + payload = json.loads(reports[-1].read_text(encoding="utf-8")) + assert payload["status"] == "CAPTURE_CANCELLED" + assert len(payload["streams"]) == 8 + + +def _failed_epoch_for_recovery(tmp_path: Path, epoch_id: str) -> NormalizedEpochJournal: + journal = _journal_with_lineage(tmp_path, epoch_id) + journal._publish_normalized = lambda: (_ for _ in ()).throw(OSError("publish")) # type: ignore[method-assign] + with pytest.raises(OSError): + journal.finalize(created_at=epoch_fixtures.NOW) + journal._open_stream.close() + return journal + + +def _rewrite_failure(journal: NormalizedEpochJournal, **changes: object) -> None: + path = next(journal.root.glob("finalize-failure-*.json")) + payload = json.loads(path.read_text(encoding="utf-8")) + payload.pop("failure_sha256") + payload.update(changes) + payload["failure_sha256"] = hashlib.sha256( + epoch_module.canonical_json_bytes(payload) + ).hexdigest() + path.write_text(json.dumps(payload), encoding="utf-8") + + +def test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush( + tmp_path: Path, +) -> None: + invalid_root = tmp_path / "invalid" + invalid_root.mkdir() + hot, _archive, guard = epoch_fixtures.storage(invalid_root) + with pytest.raises(ValidationError, match="flush limits"): + NormalizedEpochJournal( + hot, + epoch_id="bad-flush", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + flush_records=0, + ) + + identity = _failed_epoch_for_recovery(tmp_path / "identity", "identity") + _rewrite_failure(identity, stream_id="different") + with pytest.raises(ValidationError, match="not recoverable"): + NormalizedEpochJournal.recover( + identity.hot_root, + epoch_id=identity.epoch_id, + stream_id=identity.stream_id, + provider=identity.provider, + venue=identity.venue, + storage_guard=identity.storage_guard, + policy=identity.policy, + ) + + part = _failed_epoch_for_recovery(tmp_path / "part", "part") + part_path = next(part.root.glob("part-*.ndjson")) + part_path.write_bytes(part_path.read_bytes() + b" ") + with pytest.raises(ValidationError, match="part hash changed"): + NormalizedEpochJournal.recover( + part.hot_root, + epoch_id=part.epoch_id, + stream_id=part.stream_id, + provider=part.provider, + venue=part.venue, + storage_guard=part.storage_guard, + policy=part.policy, + ) + + count = _failed_epoch_for_recovery(tmp_path / "count", "count") + _rewrite_failure(count, records=count.records + 1) + with pytest.raises(ValidationError, match="record count changed"): + NormalizedEpochJournal.recover( + count.hot_root, + epoch_id=count.epoch_id, + stream_id=count.stream_id, + provider=count.provider, + venue=count.venue, + storage_guard=count.storage_guard, + policy=count.policy, + ) + + opened = _failed_epoch_for_recovery(tmp_path / "open", "open") + opened._open_path.write_bytes(b'{"partial":true}\n') + with pytest.raises(ValidationError, match="unsealed open part"): + NormalizedEpochJournal.recover( + opened.hot_root, + epoch_id=opened.epoch_id, + stream_id=opened.stream_id, + provider=opened.provider, + venue=opened.venue, + storage_guard=opened.storage_guard, + policy=opened.policy, + ) + + +def test_epoch_receipt_reload_mismatch_is_audited_and_retryable( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path, "reload-mismatch") + original = epoch_module._atomic_immutable_write + + def corrupt_receipt(path: Path, body: bytes, *, root: Path | None = None) -> None: + original(path, body, root=root) + if path.name.startswith("receipt-"): + path.write_text("{}", encoding="utf-8") + + monkeypatch.setattr(epoch_module, "_atomic_immutable_write", corrupt_receipt) + with pytest.raises(ValidationError, match="receipt reload mismatch"): + journal.finalize(created_at=epoch_fixtures.NOW) + assert tuple(journal.root.glob("finalize-failure-*.json")) + assert journal._state == "OPEN" + + +def test_epoch_abort_publish_failure_keeps_retryable_open_state( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + root = tmp_path / "abort" + root.mkdir() + hot, _archive, guard = epoch_fixtures.storage(root) + journal = NormalizedEpochJournal( + hot, + epoch_id="abort-publish", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + original = epoch_module._atomic_immutable_write + monkeypatch.setattr( + epoch_module, + "_atomic_immutable_write", + lambda *_args, **_kwargs: (_ for _ in ()).throw(OSError("abort publish")), + ) + with pytest.raises(OSError, match="abort publish"): + journal.abort_visible("cancelled") + assert journal._state == "OPEN" + monkeypatch.setattr(epoch_module, "_atomic_immutable_write", original) + assert journal.abort_visible("cancelled").is_file() + assert journal._state == "ABORTED" + + +def test_runner_prepaused_retry_success_and_binance_multiframe_bridge(tmp_path: Path) -> None: + prepaused = _runner_for_negative_test(tmp_path / "prepaused") + prepaused._pause("operator") + report = asyncio.run(prepaused.run(maximum_websocket_messages=3)) + assert report.final_state == CaptureState.PAUSED.value + assert report.websocket_messages == 0 + + retry = _runner_for_negative_test(tmp_path / "retry") + successful_connection = collector_fixtures.FakeConnection(retry.stream) + + class FailThenConnect: + def __init__(self) -> None: + self.calls = 0 + + async def connect(self, _url: str, *, timeout_seconds: float): + self.calls += 1 + if self.calls == 1: + raise ProviderError("first connect failed") + return successful_connection + + retry.config = replace( + retry.config, + retry=collector_fixtures.RetryPolicy( + max_attempts=2, + base_delay_seconds=0.01, + maximum_delay_seconds=0.01, + jitter_fraction=0, + ), + ) + retry.websockets = FailThenConnect() + retried = asyncio.run(retry.run(maximum_websocket_messages=3)) + assert retried.outcome == "BOUNDED_COMPLETE" + assert retried.websocket_messages == 3 + assert any("first connect failed" in item for item in retried.errors) + + resync = _runner_for_negative_test(tmp_path / "resync") + resync.config = replace( + resync.config, + retry=collector_fixtures.RetryPolicy( + max_attempts=2, + base_delay_seconds=0.01, + maximum_delay_seconds=0.01, + jitter_fraction=0, + ), + ) + malformed = collector_fixtures.FakeConnection(resync.stream) + malformed.messages = [b"{"] + recovered_connection = collector_fixtures.FakeConnection(resync.stream) + + class MalformedThenRecover: + def __init__(self) -> None: + self.connections = [malformed, recovered_connection] + + async def connect(self, _url: str, *, timeout_seconds: float): + return self.connections.pop(0) + + resync.websockets = MalformedThenRecover() + resynced = asyncio.run(resync.run(maximum_websocket_messages=3)) + assert resynced.outcome == "BOUNDED_COMPLETE" + assert resynced.raw_segments == resynced.archived_segments >= 2 + assert any("valid JSON" in item for item in resynced.errors) + + bridge = _runner_for_negative_test(tmp_path / "bridge") + messages = collector_fixtures.messages_for(bridge.stream) + first = json.loads(messages[0]) + first["U"], first["u"] = 90, 100 + second = json.loads(messages[1]) + second["U"], second["u"] = 99, 101 + third = json.loads(messages[2]) + third["U"], third["u"] = 102, 102 + + class BridgeConnection(collector_fixtures.FakeConnection): + def __init__(self) -> None: + super().__init__(bridge.stream) + self.messages = [json.dumps(item).encode() for item in (first, second, third)] + + connection = BridgeConnection() + + class BridgeConnector: + async def connect(self, _url: str, *, timeout_seconds: float): + return connection + + bridge.websockets = BridgeConnector() + bridged = asyncio.run(bridge.run(maximum_websocket_messages=3)) + assert bridged.outcome == "BOUNDED_COMPLETE" + assert bridged.websocket_messages == 3 + + +def test_cancellation_during_retry_backoff_still_persists_terminal_report( + tmp_path: Path, +) -> None: + runner = _runner_for_negative_test(tmp_path) + runner.config = replace( + runner.config, + retry=collector_fixtures.RetryPolicy( + max_attempts=2, + base_delay_seconds=1, + maximum_delay_seconds=1, + jitter_fraction=0, + ), + ) + runner.websockets = collector_fixtures.FailedConnector() + + async def exercise() -> None: + sleeping = asyncio.Event() + + class BackoffClock: + def now(self): + return runner.state.clock.now() + + async def sleep(self, _seconds: float) -> None: + sleeping.set() + await asyncio.Event().wait() + + runner.clock = BackoffClock() + task = asyncio.create_task(runner.run(maximum_websocket_messages=3)) + await asyncio.wait_for(sleeping.wait(), timeout=5) + task.cancel() + with pytest.raises(asyncio.CancelledError): + await task + + asyncio.run(exercise()) + report = runner._last_report + assert report is not None and report.outcome == "CANCELLED" + assert report.final_state == CaptureState.PAUSED.value + assert report.pending_raw_messages == report.pending_raw_segments == 0 diff --git a/tests/test_capture_v2_synchronizers_epoch.py b/tests/test_capture_v2_synchronizers_epoch.py index e3de14b..edb5a87 100644 --- a/tests/test_capture_v2_synchronizers_epoch.py +++ b/tests/test_capture_v2_synchronizers_epoch.py @@ -542,7 +542,8 @@ def test_epoch_configuration_closed_abort_and_part_integrity_guards(tmp_path: Pa closed = NormalizedEpochJournal(epoch_id="closed-abort", **common) closed.finalize(created_at=NOW) - assert closed.abort_visible("visible after close").is_file() + with pytest.raises(ValidationError, match="cannot abort"): + closed.abort_visible("visible after close") tampered = NormalizedEpochJournal(epoch_id="tampered", max_part_rows=1, **common) tampered.append(({"event_type": "test", "value": 1},)) diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index 3352b35..2b934ec 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -37,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == version("quant-data-kit") == "0.7.0" + assert qdk.__version__ == version("quant-data-kit") == "0.7.1" for name in ( "write_raw_bytes", "write_normalized_events", diff --git a/tools/benchmark_capture_v2.py b/tools/benchmark_capture_v2.py new file mode 100644 index 0000000..7ded023 --- /dev/null +++ b/tools/benchmark_capture_v2.py @@ -0,0 +1,391 @@ +"""Offline eight-stream M7 Raw→Normalized→archive/restore benchmark.""" + +from __future__ import annotations + +import argparse +import asyncio +import hashlib +import json +import os +import platform +import subprocess +import sys +import tempfile +import time +from datetime import datetime, timedelta, timezone +from pathlib import Path + +from quant_data_kit.capture_v2.collector import CryptoL2CaptureCoordinator +from quant_data_kit.capture_v2.models import ( + CaptureConfig, + Clock, + MarketKind, + Provider, + RetryPolicy, + SegmentRotation, + StreamConfig, + canonical_json_bytes, + default_crypto_l2_streams, +) +from quant_data_kit.capture_v2.storage import ( + CaptureStorageGuard, + DiskCapacity, + LocalArchiveController, + VolumeIdentity, +) +from quant_data_kit.capture_v2.transport import HttpResponse +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.exceptions import ProviderError + +UTC = timezone.utc +START = datetime(2026, 8, 29, tzinfo=UTC) +START_MS = int(START.timestamp() * 1000) +MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND = 240.0 +MAXIMUM_EVENT_LOOP_P99_MILLISECONDS = 100.0 + + +class BenchmarkClock(Clock): + def __init__(self) -> None: + self.current = START + + def now(self) -> datetime: + value = self.current + self.current += timedelta(milliseconds=10) + return value + + async def sleep(self, seconds: float) -> None: + self.current += timedelta(seconds=seconds) + await asyncio.sleep(0) + + +class FixtureHttp: + async def get(self, url: str, *, timeout_seconds: float) -> HttpResponse: + if timeout_seconds <= 0: + raise ProviderError("benchmark HTTP timeout must be positive") + body = canonical_json_bytes( + {"lastUpdateId": 100, "bids": [["100", "2"]], "asks": [["101", "3"]]} + ) + return HttpResponse(url=url, status=200, body=body) + + +class FixtureConnection: + def __init__(self, stream: StreamConfig, message_count: int) -> None: + self.stream = stream + self.messages = _messages(stream, message_count) + self.sent: list[bytes] = [] + self.closed = False + + async def send(self, payload: bytes) -> None: + self.sent.append(payload) + + async def receive(self, *, timeout_seconds: float) -> bytes: + if timeout_seconds <= 0: + raise ProviderError("benchmark WebSocket timeout must be positive") + await asyncio.sleep(0) + if not self.messages: + raise ProviderError("offline fixture was exhausted") + return self.messages.pop(0) + + async def close(self) -> None: + self.closed = True + + +class FixtureConnector: + def __init__(self, streams: tuple[StreamConfig, ...], message_count: int) -> None: + self.unassigned = list(streams) + self.message_count = message_count + self.connections: list[FixtureConnection] = [] + + async def connect(self, url: str, *, timeout_seconds: float) -> FixtureConnection: + if timeout_seconds <= 0: + raise ProviderError("benchmark connect timeout must be positive") + stream = next(item for item in self.unassigned if item.websocket_url == url) + self.unassigned.remove(stream) + connection = FixtureConnection(stream, self.message_count) + self.connections.append(connection) + return connection + + +def _messages(stream: StreamConfig, count: int) -> list[bytes]: + if stream.provider is Provider.BINANCE: + values = [] + for index in range(count): + final = 101 + index + first = 99 if index == 0 else final + payload = { + "e": "depthUpdate", + "E": START_MS + index, + "T": START_MS + index, + "s": stream.native_symbol, + "U": first, + "u": final, + "b": [["100", str(2_000_000 + index)]], + "a": [["101", str(3_000_000 + index)]], + } + if stream.market is MarketKind.USDT_PERPETUAL: + payload["pu"] = 100 if index == 0 else final - 1 + values.append(canonical_json_bytes(payload)) + return values + values = [ + canonical_json_bytes( + { + "event": "subscribe", + "arg": {"channel": "books", "instId": stream.native_symbol}, + "code": "0", + "msg": "", + } + ), + canonical_json_bytes( + { + "arg": {"channel": "books", "instId": stream.native_symbol}, + "action": "snapshot", + "data": [ + { + "ts": str(START_MS), + "seqId": 10, + "prevSeqId": -1, + "checksum": 0, + "bids": [["100", "2000000"]], + "asks": [["101", "3000000"]], + } + ], + } + ), + ] + for index in range(2, count): + sequence = 9 + index + values.append( + canonical_json_bytes( + { + "arg": {"channel": "books", "instId": stream.native_symbol}, + "action": "update", + "data": [ + { + "ts": str(START_MS + index), + "seqId": sequence, + "prevSeqId": sequence - 1, + "checksum": 0, + "bids": [["100", str(2_000_000 + index)]], + "asks": [["101", str(3_000_000 + index)]], + } + ], + } + ) + ) + return values + + +def _percentile(values: list[float], quantile: float) -> float: + if not values: + return 0.0 + ordered = sorted(values) + index = min(len(ordered) - 1, int((len(ordered) - 1) * quantile)) + return ordered[index] + + +async def _event_loop_sampler(stop: asyncio.Event, samples: list[float]) -> None: + interval = 0.001 + expected = time.perf_counter() + interval + while not stop.is_set(): + await asyncio.sleep(interval) + observed = time.perf_counter() + samples.append(max(0.0, observed - expected) * 1_000) + expected = observed + interval + + +def _git_metadata(repository: Path) -> tuple[str, bool]: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=repository, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + dirty = bool( + subprocess.run( + ["git", "status", "--porcelain"], + cwd=repository, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + ) + return commit, dirty + + +async def _run_benchmark(repository: Path, messages_per_stream: int) -> dict[str, object]: + streams = default_crypto_l2_streams() + with tempfile.TemporaryDirectory(prefix="qdk-m7-benchmark-") as temporary_text: + temporary = Path(temporary_text) + hot, archive, restore = ( + temporary / "hot", + temporary / "archive", + temporary / "restore", + ) + for root in (hot, archive, restore): + root.mkdir() + policy = StoragePolicy( + hot_quota_bytes=16 * 1024**3, + minimum_free_bytes=1, + minimum_free_fraction=0.000001, + ) + + def identity(path: Path) -> VolumeIdentity: + return VolumeIdentity(f"fixture-{path.name}", (f"fixture-device-{path.name}",)) + + guard = CaptureStorageGuard( + hot, + archive, + policy=policy, + archive_reserve_bytes=1, + volume_identity=identity, + capacity_probe=lambda _path: DiskCapacity(64 * 1024**3, 48 * 1024**3), + ) + clock = BenchmarkClock() + connector = FixtureConnector(streams, messages_per_stream) + config = CaptureConfig( + hot_root=hot, + archive_root=archive, + restore_root=restore, + collector_commit=_git_metadata(repository)[0], + streams=streams, + rotation=SegmentRotation( + max_messages=256, + max_wire_bytes=8 * 1024**2, + max_age_seconds=30, + ), + retry=RetryPolicy(max_attempts=1), + archive_reserve_bytes=1, + ) + coordinator = CryptoL2CaptureCoordinator( + config, + storage_guard=guard, + archive=LocalArchiveController( + hot, archive, restore, storage_guard=guard, clock=clock.now + ), + http=FixtureHttp(), + websockets=connector, + clock=clock, + jitter=lambda: 0.5, + policy=policy, + ) + samples: list[float] = [] + stop = asyncio.Event() + sampler = asyncio.create_task(_event_loop_sampler(stop, samples)) + started = time.perf_counter() + report = await coordinator.run(maximum_websocket_messages=messages_per_stream) + elapsed = time.perf_counter() - started + stop.set() + await sampler + websocket_messages = sum(item.websocket_messages for item in report.streams) + raw_frames = websocket_messages + sum( + 1 for item in report.streams if item.provider == Provider.BINANCE.value + ) + accepted_rows = sum(item.accepted_rows for item in report.streams) + raw_segments = sum(item.raw_segments for item in report.streams) + archive_segments = sum(item.archived_segments for item in report.streams) + throughput = websocket_messages / elapsed + p95 = _percentile(samples, 0.95) + p99 = _percentile(samples, 0.99) + consistency = bool( + report.status == "BOUNDED_PROBE_COMPLETE" + and len(report.streams) == 8 + and websocket_messages == 8 * messages_per_stream + and raw_segments == archive_segments + and all(item.normalized_epochs == 1 for item in report.streams) + and all(not item.errors for item in report.streams) + and all(item.pending_raw_messages == 0 for item in report.streams) + and all(item.pending_raw_segments == 0 for item in report.streams) + ) + gate_passed = bool( + consistency + and throughput >= MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND + and p99 <= MAXIMUM_EVENT_LOOP_P99_MILLISECONDS + ) + commit, dirty = _git_metadata(repository) + return { + "schema_version": "puresaber.m7-offline-capture-benchmark@1.0.0", + "scope": "OFFLINE_FIXTURE_NOT_NETWORK", + "measured_at": datetime.now(tz=UTC).isoformat().replace("+00:00", "Z"), + "repository": str(repository), + "collector_commit": commit, + "working_tree_dirty": dirty, + "machine": { + "hostname": platform.node(), + "platform": platform.platform(), + "processor": platform.processor(), + "logical_cpu_count": os.cpu_count(), + "python": sys.version, + }, + "fixture": { + "providers": list(report.providers), + "capabilities": list(report.capabilities), + "streams": len(report.streams), + "messages_per_stream": messages_per_stream, + "websocket_messages": websocket_messages, + "raw_frames_including_https_snapshots": raw_frames, + "normalized_accepted_rows": accepted_rows, + "raw_segments": raw_segments, + "archive_restore_verified_segments": archive_segments, + "stream_results": [ + { + "stream_id": item.stream_id, + "outcome": item.outcome, + "websocket_messages": item.websocket_messages, + "accepted_rows": item.accepted_rows, + "raw_segments": item.raw_segments, + "archived_segments": item.archived_segments, + "errors": list(item.errors), + } + for item in report.streams + ], + }, + "result": { + "run_status": report.status, + "elapsed_seconds": elapsed, + "throughput_websocket_messages_per_second": throughput, + "event_loop_delay_samples": len(samples), + "event_loop_delay_p95_milliseconds": p95, + "event_loop_delay_p99_milliseconds": p99, + "raw_normalized_archive_consistent": consistency, + }, + "gate": { + "minimum_throughput_messages_per_second": MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND, + "maximum_event_loop_p99_milliseconds": MAXIMUM_EVENT_LOOP_P99_MILLISECONDS, + "target_live_offer_rate_messages_per_second": 80, + "throughput_safety_multiple": throughput / 80, + "rationale": ( + "The frozen eight streams at 100 ms imply 80 messages/s. The offline gate " + "requires at least 240 messages/s (3x offer-rate headroom) while including " + "Raw segment publication, Normalized publication, archive copy and restore hash." + ), + "passed": gate_passed, + }, + } + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--messages-per-stream", type=int, default=500) + parser.add_argument("--output-dir", type=Path, required=True) + args = parser.parse_args() + if args.messages_per_stream < 3: + parser.error("--messages-per-stream must be at least 3") + repository = Path(__file__).resolve().parents[1] + payload = asyncio.run(_run_benchmark(repository, args.messages_per_stream)) + identity_hash = hashlib.sha256(canonical_json_bytes(payload)).hexdigest() + document = {**payload, "report_sha256": identity_hash} + args.output_dir.mkdir(parents=True, exist_ok=True) + output = args.output_dir / f"benchmark-sha256-{identity_hash}.json" + with output.open("xb") as stream: + stream.write(canonical_json_bytes(document)) + stream.flush() + os.fsync(stream.fileno()) + print(output) + print(json.dumps(document["result"], indent=2)) + print(json.dumps(document["gate"], indent=2)) + return 0 if bool(document["gate"]["passed"]) else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) From c20dd31769a37fbac488ef56d339ffa282877af8 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 00:15:47 +0800 Subject: [PATCH 06/16] perf: add dense M7 capture benchmark --- src/quant_data_kit/capture_v2/collector.py | 44 ++- src/quant_data_kit/capture_v2/epoch.py | 236 +++++++++++--- tests/test_benchmark_capture_v2.py | 195 ++++++++++++ tools/benchmark_capture_v2.py | 342 ++++++++++++++++++--- 4 files changed, 732 insertions(+), 85 deletions(-) create mode 100644 tests/test_benchmark_capture_v2.py diff --git a/src/quant_data_kit/capture_v2/collector.py b/src/quant_data_kit/capture_v2/collector.py index 2657721..2115b76 100644 --- a/src/quant_data_kit/capture_v2/collector.py +++ b/src/quant_data_kit/capture_v2/collector.py @@ -8,6 +8,7 @@ import time import uuid from collections.abc import Callable +from concurrent.futures import Executor from dataclasses import asdict, dataclass from datetime import datetime, timezone from pathlib import Path @@ -164,6 +165,7 @@ def __init__( policy: StoragePolicy = _DEFAULT_POLICY, receive_timeout_seconds: float = 30.0, monotonic: Callable[[], float] = time.monotonic, + normalization_executor: Executor | None = None, ) -> None: self.config = config self.stream = stream @@ -178,6 +180,7 @@ def __init__( self.policy = policy self.receive_timeout_seconds = receive_timeout_seconds self.monotonic = monotonic + self.normalization_executor = normalization_executor self.connection_id = f"conn-{uuid.uuid4().hex}" self._audit_failures = 0 self.segment_writer = RawSegmentWriter( @@ -230,11 +233,11 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR await self._run_connection(maximum_websocket_messages) if maximum_websocket_messages is not None: self._outcome = "BOUNDED_COMPLETE" - self._terminal_cleanup("bounded_probe_complete") + await self._terminal_cleanup("bounded_probe_complete") break raise ValidationError("long-running connection returned without a stop cause") except asyncio.CancelledError: - self._handle_cancellation() + await self._handle_cancellation() raise except Exception as exc: # noqa: BLE001 - feed failures share one retry boundary while True: @@ -249,7 +252,7 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR except Exception as audit_exc: # noqa: BLE001 - state remains fail-closed self._errors.append(f"{type(audit_exc).__name__}: {audit_exc}") self._outcome = "FAILED" - self._terminal_cleanup("audit_persistence_failure", abort_reason=str(exc)) + await self._terminal_cleanup("audit_persistence_failure", abort_reason=str(exc)) break try: if self.state.state not in {CaptureState.CONNECTING, CaptureState.RESYNC}: @@ -261,15 +264,15 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR self._resyncs += 1 self.segment_writer.flush() self._drain_segments() - self._finalize_epoch(abort_reason=str(exc)) + await asyncio.to_thread(self._finalize_epoch, str(exc)) except Exception as cleanup_exc: # noqa: BLE001 - cleanup failures always pause self._errors.append(f"{type(cleanup_exc).__name__}: {cleanup_exc}") self._outcome = "FAILED" - self._terminal_cleanup("failure_cleanup_failed", abort_reason=str(exc)) + await self._terminal_cleanup("failure_cleanup_failed", abort_reason=str(exc)) break if failed_attempts >= self.config.retry.max_attempts: self._outcome = "FAILED" - self._terminal_cleanup("retry_budget_exhausted", abort_reason=str(exc)) + await self._terminal_cleanup("retry_budget_exhausted", abort_reason=str(exc)) break delay = self.config.retry.delay(failed_attempts, self.jitter) self.state.audit( @@ -278,7 +281,7 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR try: await self.clock.sleep(delay) except asyncio.CancelledError: - self._handle_cancellation() + await self._handle_cancellation() raise try: if self.state.state is CaptureState.RESYNC: @@ -287,10 +290,10 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR await self._run_connection(maximum_websocket_messages) if maximum_websocket_messages is not None: self._outcome = "BOUNDED_COMPLETE" - self._terminal_cleanup("bounded_probe_complete") + await self._terminal_cleanup("bounded_probe_complete") break except asyncio.CancelledError: - self._handle_cancellation() + await self._handle_cancellation() raise except Exception as retry_exc: # noqa: BLE001 - retry shares the same boundary exc = retry_exc @@ -299,12 +302,12 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureStreamR self._last_report = self._report() return self._last_report - def _handle_cancellation(self) -> None: + async def _handle_cancellation(self) -> None: self._outcome = "CANCELLED" message = "CancelledError: capture task cancelled" if message not in self._errors: self._errors.append(message) - self._terminal_cleanup("capture_cancelled", abort_reason="capture_cancelled") + await self._terminal_cleanup("capture_cancelled", abort_reason="capture_cancelled") self._last_report = self._report() async def _run_connection(self, maximum_websocket_messages: int | None) -> None: @@ -491,6 +494,7 @@ def _new_epoch(self) -> None: flush_bytes=self.config.durability.normalized_flush_bytes, flush_seconds=self.config.durability.normalized_flush_seconds, monotonic=self.monotonic, + normalization_executor=self.normalization_executor, ) def _drain_segments(self) -> None: @@ -516,8 +520,9 @@ def _finalize_epoch(self, abort_reason: str | None = None) -> None: self._epoch_receipts.append(receipt) self._journal = None - def _terminal_cleanup(self, reason: str, *, abort_reason: str | None = None) -> None: + async def _terminal_cleanup(self, reason: str, *, abort_reason: str | None = None) -> None: cleanup_errors: list[Exception] = [] + deferred_cancellation: asyncio.CancelledError | None = None try: self._pause(reason) except Exception as exc: # noqa: BLE001 - later durability steps must still run @@ -527,8 +532,14 @@ def _terminal_cleanup(self, reason: str, *, abort_reason: str | None = None) -> self._drain_segments() except Exception as exc: # noqa: BLE001 - retain Raw references for operator recovery cleanup_errors.append(exc) + finalize_task = asyncio.create_task(asyncio.to_thread(self._finalize_epoch, abort_reason)) + while not finalize_task.done(): + try: + await asyncio.shield(finalize_task) + except asyncio.CancelledError as exc: + deferred_cancellation = deferred_cancellation or exc try: - self._finalize_epoch(abort_reason=abort_reason) + finalize_task.result() except Exception as exc: # noqa: BLE001 - retain journal on finalize failure cleanup_errors.append(exc) for exc in cleanup_errors: @@ -540,6 +551,8 @@ def _terminal_cleanup(self, reason: str, *, abort_reason: str | None = None) -> ) if cleanup_errors: self._outcome = "FAILED" + if deferred_cancellation is not None: + raise deferred_cancellation def _pause(self, reason: str, exc: Exception | None = None) -> None: if self.state.state is CaptureState.PAUSED: @@ -616,6 +629,7 @@ def __init__( alert_sink: Callable[[str], None] | None = None, policy: StoragePolicy = _DEFAULT_POLICY, monotonic: Callable[[], float] = time.monotonic, + normalization_executor: Executor | None = None, ) -> None: assert_m7_scope(config.streams) self.config = config @@ -644,6 +658,7 @@ def __init__( self.websockets = websockets or WebsocketsConnector() self.jitter = jitter self.policy = policy + self.normalization_executor = normalization_executor def preflight(self) -> ArchivePreflightReceipt: return self.archive.preflight() @@ -708,6 +723,7 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo alert_sink=self.alert_sink, policy=self.policy, monotonic=self.monotonic, + normalization_executor=self.normalization_executor, ) ) except Exception as exc: # noqa: BLE001 - initialization failure blocks all streams @@ -751,7 +767,7 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo first_cause = first_cause or f"{type(exc).__name__}: {exc}" runner._errors.append(first_cause) runner._outcome = "FAILED" - runner._terminal_cleanup( + await runner._terminal_cleanup( "coordinator_stream_exception", abort_reason=first_cause ) result = runner._report() diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py index da1526f..0b63397 100644 --- a/src/quant_data_kit/capture_v2/epoch.py +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -7,11 +7,16 @@ import os import time from collections.abc import Callable, Iterable, Mapping +from concurrent.futures import Executor from dataclasses import asdict, dataclass from datetime import datetime, timezone from pathlib import Path from typing import Any +import orjson +import pyarrow as pa + +from quant_data_kit import normalized_v3 from quant_data_kit.capture_v2.models import canonical_json_bytes, utc_text from quant_data_kit.capture_v2.storage import ( CaptureStorageGuard, @@ -19,15 +24,24 @@ _atomic_immutable_write, ) from quant_data_kit.data_lake import ( - NormalizationResult, RawObjectReference, StoragePolicy, - write_normalized_events, + write_normalized_batches, ) from quant_data_kit.exceptions import ValidationError +from quant_data_kit.schemas_v2 import ( + BOOK_DELTA_EVENT_SCHEMA_ID, + BOOK_SNAPSHOT_EVENT_SCHEMA_ID, + get_arrow_schema, +) UTC = timezone.utc _DEFAULT_POLICY = StoragePolicy() +_ARROW_BATCH_ROWS = 32_768 +_CAPTURE_EVENT_SCHEMAS = { + "book_delta": BOOK_DELTA_EVENT_SCHEMA_ID, + "book_snapshot": BOOK_SNAPSHOT_EVENT_SCHEMA_ID, +} @dataclass(frozen=True) @@ -57,6 +71,13 @@ class NormalizedEpochReceipt: receipt_path: str +@dataclass(frozen=True) +class _NormalizationSummary: + snapshot_id: str | None + accepted_rows: int + quarantined_rows: int + + def _sha256_file(path: Path) -> str: digest = hashlib.sha256() with path.open("rb") as stream: @@ -83,6 +104,7 @@ def __init__( flush_bytes: int = 1024 * 1024, flush_seconds: float = 1.0, monotonic: Callable[[], float] = time.monotonic, + normalization_executor: Executor | None = None, ) -> None: if max_part_rows < 1: raise ValidationError("max_part_rows must be positive") @@ -100,6 +122,7 @@ def __init__( self.flush_bytes = flush_bytes self.flush_seconds = flush_seconds self.monotonic = monotonic + self.normalization_executor = normalization_executor self.root = ( self.hot_root / "capture" @@ -123,14 +146,39 @@ def __init__( def append(self, records: Iterable[Mapping[str, Any]]) -> None: self._require_open() + bodies: list[bytes] = [] + body_bytes = 0 for record in records: - body = canonical_json_bytes(dict(record)) + b"\n" - self.storage_guard.require_hot_capacity(projected_write_bytes=len(body)) - self._open_stream.write(body) - self._open_rows += 1 - self._records += 1 - self._unflushed_rows += 1 - self._unflushed_bytes += len(body) + value = record if isinstance(record, dict) else dict(record) + body = orjson.dumps(value, option=orjson.OPT_SORT_KEYS) + b"\n" + if bodies and ( + len(bodies) >= self.flush_records or body_bytes + len(body) > self.flush_bytes + ): + self._append_bodies(bodies, body_bytes) + bodies, body_bytes = [], 0 + bodies.append(body) + body_bytes += len(body) + if bodies: + self._append_bodies(bodies, body_bytes) + + def _append_bodies(self, bodies: list[bytes], body_bytes: int) -> None: + offset = 0 + while offset < len(bodies): + available_rows = self.max_part_rows - self._open_rows + selected = bodies[offset : offset + available_rows] + selected_bytes = ( + body_bytes + if offset == 0 and len(selected) == len(bodies) + else sum(len(body) for body in selected) + ) + self.storage_guard.require_hot_capacity(projected_write_bytes=selected_bytes) + self._open_stream.writelines(selected) + written = len(selected) + self._open_rows += written + self._records += written + self._unflushed_rows += written + self._unflushed_bytes += selected_bytes + offset += written if ( self._unflushed_rows >= self.flush_records or self._unflushed_bytes >= self.flush_bytes @@ -178,6 +226,7 @@ def recover( flush_bytes: int = 1024 * 1024, flush_seconds: float = 1.0, monotonic: Callable[[], float] = time.monotonic, + normalization_executor: Executor | None = None, ) -> NormalizedEpochJournal: """Reload a retryable failed finalize while preserving journal and Raw lineage.""" @@ -210,6 +259,7 @@ def recover( self.flush_bytes = flush_bytes self.flush_seconds = flush_seconds self.monotonic = monotonic + self.normalization_executor = normalization_executor self.root = root self._parts = [] self._records = 0 @@ -247,9 +297,7 @@ def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochRece if self._records and not self._raw_references: raise ValidationError("Normalized epoch records require Raw segment lineage") result = ( - self._publish_normalized() - if self._records - else NormalizationResult(None, 0, 0, None) + self._publish_normalized() if self._records else _NormalizationSummary(None, 0, 0) ) created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") identity = { @@ -263,7 +311,7 @@ def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochRece "raw_segments": len(self._raw_references), "raw_references": [asdict(item) for item in self._raw_references], "journal_parts": [asdict(item) for item in self._parts], - "normalized_snapshot_id": result.snapshot.snapshot_id if result.snapshot else None, + "normalized_snapshot_id": result.snapshot_id, "accepted_rows": result.accepted_rows, "quarantined_rows": result.quarantined_rows, } @@ -374,32 +422,36 @@ def _record_finalize_failure(self, exc: Exception) -> Path: ) return path - def _publish_normalized(self) -> NormalizationResult: - return write_normalized_events( + def _publish_normalized(self) -> _NormalizationSummary: + arguments = ( self.hot_root, - self._iter_records(), - provider=self.provider, - venue=self.venue, - upstream_raw_references=self._raw_references, - policy=self.policy, + self.root, + tuple(self._parts), + self.provider, + self.venue, + tuple(self._raw_references), + self.policy, ) + if self.normalization_executor is not None: + return self.normalization_executor.submit(_publish_epoch_parts, *arguments).result() + return _publish_epoch_parts(*arguments) + + def _iter_record_batches(self) -> Iterable[pa.RecordBatch]: + return _iter_epoch_record_batches(self.root, tuple(self._parts)) + + @staticmethod + def _record_batch( + identity: tuple[str, str, str] | None, + records: list[dict[str, Any]], + ) -> pa.RecordBatch: + if identity is None or not records: + raise ValidationError("capture epoch Arrow batch identity is missing") + schema = get_arrow_schema(identity[0]) + prepared = normalized_v3._arrow_ready_rows(schema, records) + return pa.RecordBatch.from_pylist(prepared, schema=schema) def _iter_records(self) -> Iterable[dict[str, Any]]: - for part in self._parts: - path = self.root / part.relative_path - if path.stat().st_size != part.byte_length or _sha256_file(path) != part.content_sha256: - raise ValidationError(f"Normalized epoch journal part integrity changed: {path}") - with path.open("rb") as stream: - for line_number, line in enumerate(stream, start=1): - try: - value = json.loads(line) - except (UnicodeError, json.JSONDecodeError) as exc: - raise ValidationError( - f"Normalized epoch journal line is malformed: {path}:{line_number}" - ) from exc - if not isinstance(value, dict): - raise ValidationError("Normalized epoch journal record must be an object") - yield value + return _iter_epoch_records(self.root, tuple(self._parts)) def _require_open(self) -> None: if self._state != "OPEN": @@ -414,3 +466,117 @@ def __del__(self) -> None: except OSError: pass stream.close() + + +def _iter_epoch_records(root: Path, parts: tuple[EpochPart, ...]) -> Iterable[dict[str, Any]]: + for part in parts: + path = root / part.relative_path + if path.stat().st_size != part.byte_length or _sha256_file(path) != part.content_sha256: + raise ValidationError(f"Normalized epoch journal part integrity changed: {path}") + with path.open("rb") as stream: + for line_number, line in enumerate(stream, start=1): + try: + value = orjson.loads(line) + except (UnicodeError, orjson.JSONDecodeError) as exc: + raise ValidationError( + f"Normalized epoch journal line is malformed: {path}:{line_number}" + ) from exc + if not isinstance(value, dict): + raise ValidationError("Normalized epoch journal record must be an object") + yield value + + +def _iter_epoch_record_batches( + root: Path, parts: tuple[EpochPart, ...] +) -> Iterable[pa.RecordBatch]: + pending: list[dict[str, Any]] = [] + pending_identity: tuple[str, str, str] | None = None + for record in _iter_epoch_records(root, parts): + try: + schema_id = _CAPTURE_EVENT_SCHEMAS[str(record["event_type"])] + identity = ( + schema_id, + str(record["instrument_id"]), + str(record["trading_day"]), + ) + except KeyError as exc: + raise ValidationError( + f"capture epoch contains an unsupported or incomplete event: {record}" + ) from exc + if pending and (identity != pending_identity or len(pending) >= _ARROW_BATCH_ROWS): + yield NormalizedEpochJournal._record_batch(pending_identity, pending) + pending = [] + pending_identity = identity + pending.append(record) + if pending: + yield NormalizedEpochJournal._record_batch(pending_identity, pending) + + +def _publish_epoch_parts( + hot_root: Path, + journal_root: Path, + parts: tuple[EpochPart, ...], + provider: str, + venue: str, + raw_references: tuple[RawObjectReference, ...], + policy: StoragePolicy, +) -> _NormalizationSummary: + result = write_normalized_batches( + hot_root, + _iter_epoch_record_batches(journal_root, parts), + provider=provider, + venue=venue, + upstream_raw_references=raw_references, + policy=policy, + ) + return _NormalizationSummary( + snapshot_id=result.snapshot.snapshot_id if result.snapshot else None, + accepted_rows=result.accepted_rows, + quarantined_rows=result.quarantined_rows, + ) + + +def _publish_epoch_group( + jobs: tuple[ + tuple[ + Path, + Path, + tuple[EpochPart, ...], + str, + str, + tuple[RawObjectReference, ...], + StoragePolicy, + ], + ..., + ], +) -> tuple[_NormalizationSummary, ...]: + if not jobs: + raise ValidationError("Normalized epoch group must not be empty") + hot_root = jobs[0][0] + provider = jobs[0][3] + venue = jobs[0][4] + policy = jobs[0][6] + if any( + job[0] != hot_root or job[3] != provider or job[4] != venue or job[6] != policy + for job in jobs + ): + raise ValidationError("Normalized epoch group identity or policy changed") + expected_rows = tuple(sum(part.rows for part in job[2]) for job in jobs) + + def batches() -> Iterable[pa.RecordBatch]: + for job in jobs: + yield from _iter_epoch_record_batches(job[1], job[2]) + + raw_references = tuple(reference for job in jobs for reference in job[5]) + result = write_normalized_batches( + hot_root, + batches(), + provider=provider, + venue=venue, + upstream_raw_references=raw_references, + policy=policy, + ) + if result.accepted_rows != sum(expected_rows) or result.quarantined_rows: + raise ValidationError("Normalized epoch group row accounting changed") + snapshot_id = result.snapshot.snapshot_id if result.snapshot else None + return tuple(_NormalizationSummary(snapshot_id, rows, 0) for rows in expected_rows) diff --git a/tests/test_benchmark_capture_v2.py b/tests/test_benchmark_capture_v2.py new file mode 100644 index 0000000..5e01f8e --- /dev/null +++ b/tests/test_benchmark_capture_v2.py @@ -0,0 +1,195 @@ +from __future__ import annotations + +import asyncio +import hashlib +import json +from concurrent.futures import Future +from types import SimpleNamespace + +import pytest + +from quant_data_kit.capture_v2 import epoch as epoch_module +from quant_data_kit.capture_v2.epoch import EpochPart, NormalizedEpochJournal +from quant_data_kit.capture_v2.models import MarketKind, Provider, default_crypto_l2_streams +from quant_data_kit.data_lake import StoragePolicy +from quant_data_kit.exceptions import ProviderError, ValidationError +from tools.benchmark_capture_v2 import ( + SCENARIOS, + FixtureHttp, + ProviderBatchingExecutor, + _book_levels, + _expected_normalized_rows, + _messages, +) + + +def test_dense_burst_fixture_has_frozen_depth_and_expected_row_density() -> None: + scenario = SCENARIOS["dense-burst"] + assert scenario.delta_levels_per_side == 20 + assert scenario.binance_snapshot_levels_per_side == 1000 + assert scenario.okx_snapshot_levels_per_side == 400 + assert _expected_normalized_rows(500, scenario) == 159_688 + + streams = default_crypto_l2_streams() + binance = next( + item + for item in streams + if item.provider is Provider.BINANCE and item.market is MarketKind.USDT_PERPETUAL + ) + binance_update = json.loads(_messages(binance, 3, scenario)[0]) + assert len(binance_update["b"]) == len(binance_update["a"]) == 20 + assert len({item[0] for item in binance_update["b"]}) == 20 + assert len({item[0] for item in binance_update["a"]}) == 20 + + okx = next(item for item in streams if item.provider is Provider.OKX) + okx_messages = _messages(okx, 3, scenario) + okx_snapshot = json.loads(okx_messages[1])["data"][0] + okx_update = json.loads(okx_messages[2])["data"][0] + assert len(okx_snapshot["bids"]) == len(okx_snapshot["asks"]) == 400 + assert len(okx_update["bids"]) == len(okx_update["asks"]) == 20 + + snapshot = asyncio.run( + FixtureHttp(streams, scenario).get(binance.rest_snapshot_url, timeout_seconds=1) + ) + binance_snapshot = json.loads(snapshot.body) + assert len(binance_snapshot["bids"]) == len(binance_snapshot["asks"]) == 1000 + assert binance_snapshot["symbol"] == binance.native_symbol + + +def test_sparse_fixture_is_retained_and_fixture_guards_fail_closed() -> None: + sparse = SCENARIOS["sparse"] + assert sparse.delta_levels_per_side == 1 + assert _expected_normalized_rows(500, sparse) == 7_992 + assert _book_levels("bid", 2, quantity_seed=1) == [ + ["100.00", "1"], + ["99.99", "2"], + ] + with pytest.raises(ValueError, match="unsupported book side"): + _book_levels("middle", 1, quantity_seed=1) + + http = FixtureHttp(default_crypto_l2_streams(), sparse) + with pytest.raises(ProviderError, match="unexpected snapshot URL"): + asyncio.run(http.get("https://example.invalid/depth", timeout_seconds=1)) + with pytest.raises(ProviderError, match="timeout must be positive"): + asyncio.run(http.get("https://example.invalid/depth", timeout_seconds=0)) + + +def test_epoch_group_is_fail_closed_and_preserves_per_journal_counts( + tmp_path, monkeypatch: pytest.MonkeyPatch +) -> None: + policy = StoragePolicy(minimum_free_bytes=1, minimum_free_fraction=0.000001) + part = EpochPart("unused.ndjson", 2, "0" * 64, 0) + job = (tmp_path, tmp_path, (part,), "binance", "BINANCE", (), policy) + + monkeypatch.setattr(epoch_module, "_iter_epoch_record_batches", lambda *_args: iter(())) + + def accepted(_root, batches, **_kwargs): + assert list(batches) == [] + return SimpleNamespace( + snapshot=SimpleNamespace(snapshot_id="snapshot-one"), + accepted_rows=4, + quarantined_rows=0, + ) + + monkeypatch.setattr(epoch_module, "write_normalized_batches", accepted) + summaries = epoch_module._publish_epoch_group((job, job)) + assert [item.accepted_rows for item in summaries] == [2, 2] + assert {item.snapshot_id for item in summaries} == {"snapshot-one"} + + with pytest.raises(ValidationError, match="must not be empty"): + epoch_module._publish_epoch_group(()) + mismatched = (*job[:3], "okx", *job[4:]) + with pytest.raises(ValidationError, match="identity or policy"): + epoch_module._publish_epoch_group((job, mismatched)) + + monkeypatch.setattr( + epoch_module, + "write_normalized_batches", + lambda *_args, **_kwargs: SimpleNamespace( + snapshot=None, accepted_rows=3, quarantined_rows=0 + ), + ) + with pytest.raises(ValidationError, match="row accounting"): + epoch_module._publish_epoch_group((job, job)) + + +def test_epoch_executor_and_journal_decode_negative_branches( + tmp_path, monkeypatch: pytest.MonkeyPatch +) -> None: + class ImmediateExecutor: + def submit(self, fn, *args): + assert fn is epoch_module._publish_epoch_parts + assert args[0] == tmp_path + future = Future() + future.set_result(epoch_module._NormalizationSummary("snapshot", 7, 0)) + return future + + journal = object.__new__(NormalizedEpochJournal) + journal.hot_root = tmp_path + journal.root = tmp_path + journal._parts = [] + journal.provider = "binance" + journal.venue = "BINANCE" + journal._raw_references = [] + journal.policy = StoragePolicy(minimum_free_bytes=1, minimum_free_fraction=0.000001) + journal.normalization_executor = ImmediateExecutor() + assert journal._publish_normalized().accepted_rows == 7 + with pytest.raises(ValidationError, match="identity is missing"): + NormalizedEpochJournal._record_batch(None, []) + + malformed = b"not-json\n" + malformed_path = tmp_path / "malformed.ndjson" + malformed_path.write_bytes(malformed) + malformed_part = EpochPart( + malformed_path.name, + 1, + hashlib.sha256(malformed).hexdigest(), + len(malformed), + ) + with pytest.raises(ValidationError, match="line is malformed"): + list(epoch_module._iter_epoch_records(tmp_path, (malformed_part,))) + + scalar = b"[]\n" + scalar_path = tmp_path / "scalar.ndjson" + scalar_path.write_bytes(scalar) + scalar_part = EpochPart( + scalar_path.name, + 1, + hashlib.sha256(scalar).hexdigest(), + len(scalar), + ) + with pytest.raises(ValidationError, match="must be an object"): + list(epoch_module._iter_epoch_records(tmp_path, (scalar_part,))) + + +def test_provider_batching_executor_propagates_results_and_failures() -> None: + class ImmediateDelegate: + def __init__(self, result=None, error: Exception | None = None) -> None: + self.result = result + self.error = error + + def submit(self, _fn, _group): + future = Future() + if self.error is not None: + future.set_exception(self.error) + else: + future.set_result(self.result) + return future + + arguments = (None, None, (), "binance", "BINANCE", (), StoragePolicy()) + summary = epoch_module._NormalizationSummary("snapshot", 1, 0) + executor = ProviderBatchingExecutor(ImmediateDelegate((summary,)), flush_seconds=60) + with pytest.raises(RuntimeError, match="only accepts"): + executor.submit(lambda: None) + future = executor.submit(epoch_module._publish_epoch_parts, *arguments) + executor.shutdown() + assert future.result() == summary + executor._launch_locked("missing") + + failed = ProviderBatchingExecutor( + ImmediateDelegate(error=RuntimeError("worker failed")), flush_seconds=60 + ) + failed_future = failed.submit(epoch_module._publish_epoch_parts, *arguments) + failed.shutdown() + with pytest.raises(RuntimeError, match="worker failed"): + failed_future.result() diff --git a/tools/benchmark_capture_v2.py b/tools/benchmark_capture_v2.py index 7ded023..68e0490 100644 --- a/tools/benchmark_capture_v2.py +++ b/tools/benchmark_capture_v2.py @@ -12,12 +12,20 @@ import sys import tempfile import time +from collections import deque +from concurrent.futures import Executor, Future, ProcessPoolExecutor +from dataclasses import asdict, dataclass from datetime import datetime, timedelta, timezone +from decimal import Decimal +from multiprocessing import get_context from pathlib import Path +from threading import Lock, Timer from quant_data_kit.capture_v2.collector import CryptoL2CaptureCoordinator +from quant_data_kit.capture_v2.epoch import _publish_epoch_group, _publish_epoch_parts from quant_data_kit.capture_v2.models import ( CaptureConfig, + CaptureDurabilityPolicy, Clock, MarketKind, Provider, @@ -42,6 +50,121 @@ START_MS = int(START.timestamp() * 1000) MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND = 240.0 MAXIMUM_EVENT_LOOP_P99_MILLISECONDS = 100.0 +TARGET_LIVE_OFFER_RATE_MESSAGES_PER_SECOND = 80.0 +MINIMUM_THROUGHPUT_HEADROOM_MULTIPLE = 3.0 +NORMALIZATION_PROCESS_WORKERS = 4 +STREAMS_PER_PROVIDER = 2 + + +class ProviderBatchingExecutor(Executor): + """Batch two same-provider durable journals to balance claims and parallelism.""" + + def __init__(self, delegate: Executor, *, flush_seconds: float = 0.1) -> None: + self.delegate = delegate + self.flush_seconds = flush_seconds + self._lock = Lock() + self._pending: dict[str, list[tuple[tuple[object, ...], Future[object]]]] = {} + self._timers: dict[str, Timer] = {} + self.submit_times: list[float] = [] + self.group_start_times: list[float] = [] + self.group_end_times: list[float] = [] + + def submit(self, fn, /, *args, **kwargs): + if fn is not _publish_epoch_parts or kwargs: + raise RuntimeError("provider batching executor only accepts sealed capture epochs") + provider = str(args[3]) + future: Future[object] = Future() + with self._lock: + self.submit_times.append(time.perf_counter()) + entries = self._pending.setdefault(provider, []) + entries.append((args, future)) + if len(entries) == 1: + timer = Timer(self.flush_seconds, self._flush_provider, args=(provider,)) + timer.daemon = True + self._timers[provider] = timer + timer.start() + if len(entries) == STREAMS_PER_PROVIDER: + self._launch_locked(provider) + return future + + def _flush_provider(self, provider: str) -> None: + with self._lock: + if self._pending.get(provider): + self._launch_locked(provider) + + def _launch_locked(self, provider: str) -> None: + entries = self._pending.pop(provider, []) + timer = self._timers.pop(provider, None) + if timer is not None: + timer.cancel() + if not entries: + return + group = tuple(entry[0] for entry in entries) + self.group_start_times.append(time.perf_counter()) + delegated = self.delegate.submit(_publish_epoch_group, group) + + def complete(source: Future[object]) -> None: + self.group_end_times.append(time.perf_counter()) + try: + results = source.result() + if not isinstance(results, tuple) or len(results) != len(entries): + raise RuntimeError("provider Normalized batch result count changed") + except BaseException as exc: # noqa: BLE001 - propagate exact worker failure + for _arguments, target in entries: + target.set_exception(exc) + return + for result, (_arguments, target) in zip(results, entries, strict=True): + target.set_result(result) + + delegated.add_done_callback(complete) + + def shutdown(self, wait: bool = True, *, cancel_futures: bool = False) -> None: + with self._lock: + providers = tuple(self._pending) + for provider in providers: + self._launch_locked(provider) + + +@dataclass(frozen=True) +class BenchmarkScenario: + name: str + delta_levels_per_side: int + binance_snapshot_levels_per_side: int + okx_snapshot_levels_per_side: int + description: str + + def __post_init__(self) -> None: + if ( + min( + self.delta_levels_per_side, + self.binance_snapshot_levels_per_side, + self.okx_snapshot_levels_per_side, + ) + < 1 + ): + raise ValueError("benchmark depth values must be positive") + + +SCENARIOS = { + "sparse": BenchmarkScenario( + name="sparse", + delta_levels_per_side=1, + binance_snapshot_levels_per_side=1, + okx_snapshot_levels_per_side=1, + description="One bid and one ask per snapshot/update; retained compatibility baseline.", + ), + "dense-burst": BenchmarkScenario( + name="dense-burst", + delta_levels_per_side=20, + binance_snapshot_levels_per_side=1000, + okx_snapshot_levels_per_side=400, + description=( + "Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover " + "the configured limit=1000 depth per side; OKX books snapshots cover the channel's " + "representative 400-level depth per side." + ), + ), +} class BenchmarkClock(Clock): @@ -59,19 +182,43 @@ async def sleep(self, seconds: float) -> None: class FixtureHttp: + def __init__(self, streams: tuple[StreamConfig, ...], scenario: BenchmarkScenario) -> None: + self._streams_by_url = { + item.rest_snapshot_url: item for item in streams if item.rest_snapshot_url is not None + } + self._scenario = scenario + async def get(self, url: str, *, timeout_seconds: float) -> HttpResponse: if timeout_seconds <= 0: raise ProviderError("benchmark HTTP timeout must be positive") + try: + stream = self._streams_by_url[url] + except KeyError as exc: + raise ProviderError(f"benchmark received an unexpected snapshot URL: {url}") from exc body = canonical_json_bytes( - {"lastUpdateId": 100, "bids": [["100", "2"]], "asks": [["101", "3"]]} + { + "lastUpdateId": 100, + "bids": _book_levels( + "bid", self._scenario.binance_snapshot_levels_per_side, quantity_seed=2_000_000 + ), + "asks": _book_levels( + "ask", self._scenario.binance_snapshot_levels_per_side, quantity_seed=3_000_000 + ), + "symbol": stream.native_symbol, + } ) return HttpResponse(url=url, status=200, body=body) class FixtureConnection: - def __init__(self, stream: StreamConfig, message_count: int) -> None: + def __init__( + self, + stream: StreamConfig, + message_count: int, + scenario: BenchmarkScenario, + ) -> None: self.stream = stream - self.messages = _messages(stream, message_count) + self.messages = deque(_messages(stream, message_count, scenario)) self.sent: list[bytes] = [] self.closed = False @@ -84,16 +231,22 @@ async def receive(self, *, timeout_seconds: float) -> bytes: await asyncio.sleep(0) if not self.messages: raise ProviderError("offline fixture was exhausted") - return self.messages.pop(0) + return self.messages.popleft() async def close(self) -> None: self.closed = True class FixtureConnector: - def __init__(self, streams: tuple[StreamConfig, ...], message_count: int) -> None: + def __init__( + self, + streams: tuple[StreamConfig, ...], + message_count: int, + scenario: BenchmarkScenario, + ) -> None: self.unassigned = list(streams) self.message_count = message_count + self.scenario = scenario self.connections: list[FixtureConnection] = [] async def connect(self, url: str, *, timeout_seconds: float) -> FixtureConnection: @@ -101,12 +254,39 @@ async def connect(self, url: str, *, timeout_seconds: float) -> FixtureConnectio raise ProviderError("benchmark connect timeout must be positive") stream = next(item for item in self.unassigned if item.websocket_url == url) self.unassigned.remove(stream) - connection = FixtureConnection(stream, self.message_count) + connection = FixtureConnection(stream, self.message_count, self.scenario) self.connections.append(connection) return connection -def _messages(stream: StreamConfig, count: int) -> list[bytes]: +def _book_levels(side: str, count: int, *, quantity_seed: int) -> list[list[str]]: + if side not in {"bid", "ask"}: + raise ValueError(f"unsupported book side: {side}") + start = Decimal(100) if side == "bid" else Decimal(101) + direction = Decimal("-0.01") if side == "bid" else Decimal("0.01") + return [ + [format(start + direction * index, ".2f"), str(quantity_seed + index)] + for index in range(count) + ] + + +def _update_levels( + side: str, + count: int, + *, + message_index: int, + quantity_seed: int, +) -> list[list[str]]: + levels = _book_levels(side, count, quantity_seed=quantity_seed) + for level_index, level in enumerate(levels): + level[1] = str(quantity_seed + message_index * count + level_index) + return levels + + +def _messages( + stream: StreamConfig, count: int, scenario: BenchmarkScenario | None = None +) -> list[bytes]: + selected = scenario or SCENARIOS["sparse"] if stream.provider is Provider.BINANCE: values = [] for index in range(count): @@ -119,8 +299,18 @@ def _messages(stream: StreamConfig, count: int) -> list[bytes]: "s": stream.native_symbol, "U": first, "u": final, - "b": [["100", str(2_000_000 + index)]], - "a": [["101", str(3_000_000 + index)]], + "b": _update_levels( + "bid", + selected.delta_levels_per_side, + message_index=index, + quantity_seed=2_000_000, + ), + "a": _update_levels( + "ask", + selected.delta_levels_per_side, + message_index=index, + quantity_seed=3_000_000, + ), } if stream.market is MarketKind.USDT_PERPETUAL: payload["pu"] = 100 if index == 0 else final - 1 @@ -145,8 +335,16 @@ def _messages(stream: StreamConfig, count: int) -> list[bytes]: "seqId": 10, "prevSeqId": -1, "checksum": 0, - "bids": [["100", "2000000"]], - "asks": [["101", "3000000"]], + "bids": _book_levels( + "bid", + selected.okx_snapshot_levels_per_side, + quantity_seed=2_000_000, + ), + "asks": _book_levels( + "ask", + selected.okx_snapshot_levels_per_side, + quantity_seed=3_000_000, + ), } ], } @@ -165,8 +363,18 @@ def _messages(stream: StreamConfig, count: int) -> list[bytes]: "seqId": sequence, "prevSeqId": sequence - 1, "checksum": 0, - "bids": [["100", str(2_000_000 + index)]], - "asks": [["101", str(3_000_000 + index)]], + "bids": _update_levels( + "bid", + selected.delta_levels_per_side, + message_index=index, + quantity_seed=2_000_000, + ), + "asks": _update_levels( + "ask", + selected.delta_levels_per_side, + message_index=index, + quantity_seed=3_000_000, + ), } ], } @@ -175,6 +383,13 @@ def _messages(stream: StreamConfig, count: int) -> list[bytes]: return values +def _expected_normalized_rows(messages_per_stream: int, scenario: BenchmarkScenario) -> int: + records_per_update = scenario.delta_levels_per_side * 2 + binance_rows = 4 * (1 + messages_per_stream * records_per_update) + okx_rows = 4 * (1 + (messages_per_stream - 2) * records_per_update) + return binance_rows + okx_rows + + def _percentile(values: list[float], quantile: float) -> float: if not values: return 0.0 @@ -213,7 +428,12 @@ def _git_metadata(repository: Path) -> tuple[str, bool]: return commit, dirty -async def _run_benchmark(repository: Path, messages_per_stream: int) -> dict[str, object]: +async def _run_benchmark( + repository: Path, + messages_per_stream: int, + scenario: BenchmarkScenario | str = "sparse", +) -> dict[str, object]: + selected = SCENARIOS[scenario] if isinstance(scenario, str) else scenario streams = default_crypto_l2_streams() with tempfile.TemporaryDirectory(prefix="qdk-m7-benchmark-") as temporary_text: temporary = Path(temporary_text) @@ -242,7 +462,7 @@ def identity(path: Path) -> VolumeIdentity: capacity_probe=lambda _path: DiskCapacity(64 * 1024**3, 48 * 1024**3), ) clock = BenchmarkClock() - connector = FixtureConnector(streams, messages_per_stream) + connector = FixtureConnector(streams, messages_per_stream, selected) config = CaptureConfig( hot_root=hot, archive_root=archive, @@ -255,25 +475,33 @@ def identity(path: Path) -> VolumeIdentity: max_age_seconds=30, ), retry=RetryPolicy(max_attempts=1), + durability=CaptureDurabilityPolicy(probe_timeout_seconds=120.0), archive_reserve_bytes=1, ) - coordinator = CryptoL2CaptureCoordinator( - config, - storage_guard=guard, - archive=LocalArchiveController( - hot, archive, restore, storage_guard=guard, clock=clock.now - ), - http=FixtureHttp(), - websockets=connector, - clock=clock, - jitter=lambda: 0.5, - policy=policy, - ) samples: list[float] = [] stop = asyncio.Event() sampler = asyncio.create_task(_event_loop_sampler(stop, samples)) started = time.perf_counter() - report = await coordinator.run(maximum_websocket_messages=messages_per_stream) + with ProcessPoolExecutor( + max_workers=NORMALIZATION_PROCESS_WORKERS, + mp_context=get_context("spawn"), + ) as process_executor: + normalization_executor = ProviderBatchingExecutor(process_executor) + coordinator = CryptoL2CaptureCoordinator( + config, + storage_guard=guard, + archive=LocalArchiveController( + hot, archive, restore, storage_guard=guard, clock=clock.now + ), + http=FixtureHttp(streams, selected), + websockets=connector, + clock=clock, + jitter=lambda: 0.5, + policy=policy, + normalization_executor=normalization_executor, + ) + report = await coordinator.run(maximum_websocket_messages=messages_per_stream) + normalization_executor.shutdown() elapsed = time.perf_counter() - started stop.set() await sampler @@ -285,12 +513,26 @@ def identity(path: Path) -> VolumeIdentity: raw_segments = sum(item.raw_segments for item in report.streams) archive_segments = sum(item.archived_segments for item in report.streams) throughput = websocket_messages / elapsed + normalized_throughput = accepted_rows / elapsed + expected_rows = _expected_normalized_rows(messages_per_stream, selected) + normalized_rows_per_message = accepted_rows / websocket_messages + target_normalized_rows_per_second = ( + TARGET_LIVE_OFFER_RATE_MESSAGES_PER_SECOND * normalized_rows_per_message + ) + minimum_normalized_rows_per_second = ( + target_normalized_rows_per_second * MINIMUM_THROUGHPUT_HEADROOM_MULTIPLE + ) p95 = _percentile(samples, 0.95) p99 = _percentile(samples, 0.99) + last_epoch_submit_seconds = max(normalization_executor.submit_times) - started + normalization_group_window_seconds = max(normalization_executor.group_end_times) - min( + normalization_executor.group_start_times + ) consistency = bool( report.status == "BOUNDED_PROBE_COMPLETE" and len(report.streams) == 8 and websocket_messages == 8 * messages_per_stream + and accepted_rows == expected_rows and raw_segments == archive_segments and all(item.normalized_epochs == 1 for item in report.streams) and all(not item.errors for item in report.streams) @@ -300,12 +542,18 @@ def identity(path: Path) -> VolumeIdentity: gate_passed = bool( consistency and throughput >= MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND + and normalized_throughput >= minimum_normalized_rows_per_second and p99 <= MAXIMUM_EVENT_LOOP_P99_MILLISECONDS ) commit, dirty = _git_metadata(repository) return { - "schema_version": "puresaber.m7-offline-capture-benchmark@1.0.0", + "schema_version": "puresaber.m7-offline-capture-benchmark@1.1.0", "scope": "OFFLINE_FIXTURE_NOT_NETWORK", + "scenario": { + **asdict(selected), + "binance_configured_snapshot_depth_basis": "REST limit=1000 per side", + "okx_configured_snapshot_depth_basis": "books channel representative depth=400 per side", + }, "measured_at": datetime.now(tz=UTC).isoformat().replace("+00:00", "Z"), "repository": str(repository), "collector_commit": commit, @@ -316,6 +564,8 @@ def identity(path: Path) -> VolumeIdentity: "processor": platform.processor(), "logical_cpu_count": os.cpu_count(), "python": sys.version, + "normalization_process_workers": NORMALIZATION_PROCESS_WORKERS, + "normalization_strategy": "provider-batched durable epochs", }, "fixture": { "providers": list(report.providers), @@ -325,6 +575,8 @@ def identity(path: Path) -> VolumeIdentity: "websocket_messages": websocket_messages, "raw_frames_including_https_snapshots": raw_frames, "normalized_accepted_rows": accepted_rows, + "expected_normalized_rows": expected_rows, + "normalized_rows_per_websocket_message": normalized_rows_per_message, "raw_segments": raw_segments, "archive_restore_verified_segments": archive_segments, "stream_results": [ @@ -344,20 +596,37 @@ def identity(path: Path) -> VolumeIdentity: "run_status": report.status, "elapsed_seconds": elapsed, "throughput_websocket_messages_per_second": throughput, + "throughput_normalized_rows_per_second": normalized_throughput, "event_loop_delay_samples": len(samples), "event_loop_delay_p95_milliseconds": p95, "event_loop_delay_p99_milliseconds": p99, "raw_normalized_archive_consistent": consistency, + "last_epoch_submit_seconds": last_epoch_submit_seconds, + "normalization_group_window_seconds": normalization_group_window_seconds, }, "gate": { "minimum_throughput_messages_per_second": MINIMUM_THROUGHPUT_MESSAGES_PER_SECOND, + "minimum_throughput_normalized_rows_per_second": ( + minimum_normalized_rows_per_second + ), "maximum_event_loop_p99_milliseconds": MAXIMUM_EVENT_LOOP_P99_MILLISECONDS, - "target_live_offer_rate_messages_per_second": 80, - "throughput_safety_multiple": throughput / 80, + "target_live_offer_rate_messages_per_second": ( + TARGET_LIVE_OFFER_RATE_MESSAGES_PER_SECOND + ), + "target_live_normalized_rows_per_second_at_scenario_density": ( + target_normalized_rows_per_second + ), + "throughput_safety_multiple": ( + throughput / TARGET_LIVE_OFFER_RATE_MESSAGES_PER_SECOND + ), + "normalized_rows_safety_multiple": ( + normalized_throughput / target_normalized_rows_per_second + ), "rationale": ( - "The frozen eight streams at 100 ms imply 80 messages/s. The offline gate " - "requires at least 240 messages/s (3x offer-rate headroom) while including " - "Raw segment publication, Normalized publication, archive copy and restore hash." + "The frozen eight streams at 100 ms imply 80 messages/s. Both message and " + "scenario-density Normalized-row throughput require at least 3x live offer-rate " + "headroom while including Raw segment publication, Normalized publication, " + "archive copy and restore hash." ), "passed": gate_passed, }, @@ -367,16 +636,17 @@ def identity(path: Path) -> VolumeIdentity: def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--messages-per-stream", type=int, default=500) + parser.add_argument("--scenario", choices=tuple(SCENARIOS), default="sparse") parser.add_argument("--output-dir", type=Path, required=True) args = parser.parse_args() if args.messages_per_stream < 3: parser.error("--messages-per-stream must be at least 3") repository = Path(__file__).resolve().parents[1] - payload = asyncio.run(_run_benchmark(repository, args.messages_per_stream)) + payload = asyncio.run(_run_benchmark(repository, args.messages_per_stream, args.scenario)) identity_hash = hashlib.sha256(canonical_json_bytes(payload)).hexdigest() document = {**payload, "report_sha256": identity_hash} args.output_dir.mkdir(parents=True, exist_ok=True) - output = args.output_dir / f"benchmark-sha256-{identity_hash}.json" + output = args.output_dir / f"benchmark-{args.scenario}-sha256-{identity_hash}.json" with output.open("xb") as stream: stream.write(canonical_json_bytes(document)) stream.flush() From 29f4decf05925b731d6dcefedf7f43de5eba48f0 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 00:26:15 +0800 Subject: [PATCH 07/16] fix: anchor capture capacity timing before worker teardown --- tests/test_benchmark_capture_v2.py | 27 +++++++++++- tools/benchmark_capture_v2.py | 69 +++++++++++++++++++++++++++--- 2 files changed, 89 insertions(+), 7 deletions(-) diff --git a/tests/test_benchmark_capture_v2.py b/tests/test_benchmark_capture_v2.py index 5e01f8e..41e7933 100644 --- a/tests/test_benchmark_capture_v2.py +++ b/tests/test_benchmark_capture_v2.py @@ -15,6 +15,7 @@ from quant_data_kit.exceptions import ProviderError, ValidationError from tools.benchmark_capture_v2 import ( SCENARIOS, + BenchmarkTiming, FixtureHttp, ProviderBatchingExecutor, _book_levels, @@ -182,7 +183,10 @@ def submit(self, _fn, _group): with pytest.raises(RuntimeError, match="only accepts"): executor.submit(lambda: None) future = executor.submit(epoch_module._publish_epoch_parts, *arguments) + with pytest.raises(RuntimeError, match="not quiescent"): + executor.assert_quiescent() executor.shutdown() + executor.assert_quiescent() assert future.result() == summary executor._launch_locked("missing") @@ -190,6 +194,27 @@ def submit(self, _fn, _group): ImmediateDelegate(error=RuntimeError("worker failed")), flush_seconds=60 ) failed_future = failed.submit(epoch_module._publish_epoch_parts, *arguments) - failed.shutdown() + with pytest.raises(RuntimeError, match="worker failed"): + failed.shutdown() with pytest.raises(RuntimeError, match="worker failed"): failed_future.result() + + +def test_benchmark_timing_excludes_only_post_report_worker_teardown() -> None: + timing = BenchmarkTiming(started_at=10.0) + with pytest.raises(RuntimeError, match="has not completed"): + _ = timing.workload_seconds + with pytest.raises(RuntimeError, match="closed before workload"): + timing.mark_pool_closed(11.0) + with pytest.raises(RuntimeError, match="boundary is invalid"): + timing.mark_workload_completed(9.0) + + timing.mark_workload_completed(12.5) + with pytest.raises(RuntimeError, match="boundary is invalid"): + timing.mark_workload_completed(13.0) + with pytest.raises(RuntimeError, match="teardown has not completed"): + _ = timing.worker_teardown_seconds + timing.mark_pool_closed(15.0) + assert timing.workload_seconds == 2.5 + assert timing.worker_teardown_seconds == 2.5 + assert timing.total_wall_seconds == 5.0 diff --git a/tools/benchmark_capture_v2.py b/tools/benchmark_capture_v2.py index 68e0490..92f818c 100644 --- a/tools/benchmark_capture_v2.py +++ b/tools/benchmark_capture_v2.py @@ -68,6 +68,7 @@ def __init__(self, delegate: Executor, *, flush_seconds: float = 0.1) -> None: self.submit_times: list[float] = [] self.group_start_times: list[float] = [] self.group_end_times: list[float] = [] + self._delegated: list[Future[object]] = [] def submit(self, fn, /, *args, **kwargs): if fn is not _publish_epoch_parts or kwargs: @@ -102,6 +103,7 @@ def _launch_locked(self, provider: str) -> None: group = tuple(entry[0] for entry in entries) self.group_start_times.append(time.perf_counter()) delegated = self.delegate.submit(_publish_epoch_group, group) + self._delegated.append(delegated) def complete(source: Future[object]) -> None: self.group_end_times.append(time.perf_counter()) @@ -123,6 +125,53 @@ def shutdown(self, wait: bool = True, *, cancel_futures: bool = False) -> None: providers = tuple(self._pending) for provider in providers: self._launch_locked(provider) + delegated = tuple(self._delegated) + if cancel_futures: + for future in delegated: + future.cancel() + if wait: + for future in delegated: + future.result() + + def assert_quiescent(self) -> None: + with self._lock: + if self._pending or self._timers or any(not item.done() for item in self._delegated): + raise RuntimeError("normalization executor is not quiescent") + + +@dataclass +class BenchmarkTiming: + started_at: float + workload_completed_at: float | None = None + pool_closed_at: float | None = None + + def mark_workload_completed(self, observed_at: float) -> None: + if self.workload_completed_at is not None or observed_at < self.started_at: + raise RuntimeError("benchmark workload timing boundary is invalid") + self.workload_completed_at = observed_at + + def mark_pool_closed(self, observed_at: float) -> None: + if self.workload_completed_at is None or observed_at < self.workload_completed_at: + raise RuntimeError("worker pool closed before workload completion") + self.pool_closed_at = observed_at + + @property + def workload_seconds(self) -> float: + if self.workload_completed_at is None: + raise RuntimeError("benchmark workload has not completed") + return self.workload_completed_at - self.started_at + + @property + def worker_teardown_seconds(self) -> float: + if self.workload_completed_at is None or self.pool_closed_at is None: + raise RuntimeError("benchmark worker teardown has not completed") + return self.pool_closed_at - self.workload_completed_at + + @property + def total_wall_seconds(self) -> float: + if self.pool_closed_at is None: + raise RuntimeError("benchmark worker pool has not closed") + return self.pool_closed_at - self.started_at @dataclass(frozen=True) @@ -481,7 +530,7 @@ def identity(path: Path) -> VolumeIdentity: samples: list[float] = [] stop = asyncio.Event() sampler = asyncio.create_task(_event_loop_sampler(stop, samples)) - started = time.perf_counter() + timing = BenchmarkTiming(started_at=time.perf_counter()) with ProcessPoolExecutor( max_workers=NORMALIZATION_PROCESS_WORKERS, mp_context=get_context("spawn"), @@ -502,9 +551,12 @@ def identity(path: Path) -> VolumeIdentity: ) report = await coordinator.run(maximum_websocket_messages=messages_per_stream) normalization_executor.shutdown() - elapsed = time.perf_counter() - started - stop.set() + normalization_executor.assert_quiescent() + timing.mark_workload_completed(time.perf_counter()) + stop.set() + timing.mark_pool_closed(time.perf_counter()) await sampler + elapsed = timing.workload_seconds websocket_messages = sum(item.websocket_messages for item in report.streams) raw_frames = websocket_messages + sum( 1 for item in report.streams if item.provider == Provider.BINANCE.value @@ -524,7 +576,7 @@ def identity(path: Path) -> VolumeIdentity: ) p95 = _percentile(samples, 0.95) p99 = _percentile(samples, 0.99) - last_epoch_submit_seconds = max(normalization_executor.submit_times) - started + last_epoch_submit_seconds = max(normalization_executor.submit_times) - timing.started_at normalization_group_window_seconds = max(normalization_executor.group_end_times) - min( normalization_executor.group_start_times ) @@ -547,7 +599,7 @@ def identity(path: Path) -> VolumeIdentity: ) commit, dirty = _git_metadata(repository) return { - "schema_version": "puresaber.m7-offline-capture-benchmark@1.1.0", + "schema_version": "puresaber.m7-offline-capture-benchmark@1.2.0", "scope": "OFFLINE_FIXTURE_NOT_NETWORK", "scenario": { **asdict(selected), @@ -595,6 +647,9 @@ def identity(path: Path) -> VolumeIdentity: "result": { "run_status": report.status, "elapsed_seconds": elapsed, + "workload_elapsed_seconds": elapsed, + "worker_teardown_seconds": timing.worker_teardown_seconds, + "total_wall_seconds": timing.total_wall_seconds, "throughput_websocket_messages_per_second": throughput, "throughput_normalized_rows_per_second": normalized_throughput, "event_loop_delay_samples": len(samples), @@ -626,7 +681,9 @@ def identity(path: Path) -> VolumeIdentity: "The frozen eight streams at 100 ms imply 80 messages/s. Both message and " "scenario-density Normalized-row throughput require at least 3x live offer-rate " "headroom while including Raw segment publication, Normalized publication, " - "archive copy and restore hash." + "archive copy and restore hash. The capacity gate ends only after every stream " + "report is complete and the batching executor is quiescent; one-time worker " + "process teardown is reported separately and the pool is still fully closed." ), "passed": gate_passed, }, From 1a67afec69750994023533842839cc0f12487d9f Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 01:40:34 +0800 Subject: [PATCH 08/16] fix: apply dense L2 updates atomically --- src/quant_data_kit/adapters_v2/base.py | 8 +- src/quant_data_kit/l2_replay.py | 130 +++++++++++++- src/quant_data_kit/normalized_v3.py | 228 ++++++++++++++++++++++++- tests/test_l2_replay.py | 189 ++++++++++++++++++++ tests/test_normalized_v3.py | 53 ++++++ tests/test_normalized_v3_failures.py | 216 +++++++++++++++++++++++ 6 files changed, 815 insertions(+), 9 deletions(-) diff --git a/src/quant_data_kit/adapters_v2/base.py b/src/quant_data_kit/adapters_v2/base.py index 9f15c94..9ef8d0d 100644 --- a/src/quant_data_kit/adapters_v2/base.py +++ b/src/quant_data_kit/adapters_v2/base.py @@ -13,7 +13,7 @@ from quant_data_kit.fixed_point import FixedPoint from quant_data_kit.schemas_v2 import validate_event_stream -_SEQUENCE_FACTOR = 1_000_000 +BOOK_SEQUENCE_FACTOR = 1_000_000 @dataclass(frozen=True) @@ -132,7 +132,7 @@ def snapshot(self, provider_symbol: str, provider_sequence: int) -> int: previous = self._provider_sequence.get(provider_symbol) if previous is not None and provider_sequence <= previous: raise ValidationError("provider BookSnapshot sequence did not advance") - emitted = provider_sequence * _SEQUENCE_FACTOR + emitted = provider_sequence * BOOK_SEQUENCE_FACTOR self._provider_sequence[provider_symbol] = provider_sequence self._emitted_sequence[provider_symbol] = emitted return emitted @@ -196,12 +196,12 @@ def delta( ) if provider_sequence <= provider_previous_sequence: raise ValidationError("provider BookDelta sequence did not advance") - if not 0 < level_count < _SEQUENCE_FACTOR: + if not 0 < level_count < BOOK_SEQUENCE_FACTOR: raise ValidationError("provider BookDelta level count is unsupported") previous_emitted = self._emitted_sequence[provider_symbol] pairs: list[tuple[int, int]] = [] for index in range(1, level_count + 1): - emitted = provider_sequence * _SEQUENCE_FACTOR + index + emitted = provider_sequence * BOOK_SEQUENCE_FACTOR + index pairs.append((previous_emitted, emitted)) previous_emitted = emitted self._provider_sequence[provider_symbol] = provider_sequence diff --git a/src/quant_data_kit/l2_replay.py b/src/quant_data_kit/l2_replay.py index d7a6a0e..77247e0 100644 --- a/src/quant_data_kit/l2_replay.py +++ b/src/quant_data_kit/l2_replay.py @@ -4,7 +4,7 @@ import hashlib import json -from collections.abc import Iterable, Mapping +from collections.abc import Iterable, Mapping, Sequence from dataclasses import asdict, dataclass from datetime import datetime from functools import lru_cache @@ -277,6 +277,134 @@ def _apply_validated_uniform_upsert_batch( self._sequence = final_sequence self._event_time = final_event_time + def _apply_validated_atomic_delta_group( + self, + *, + source: str, + instrument_id: str, + session_id: str, + event_time: str, + sequences: Sequence[int], + previous_sequences: Sequence[int], + sides: Sequence[str], + actions: Sequence[str], + price_units: Sequence[int], + price_scales: Sequence[int], + quantity_units: Sequence[int], + quantity_scales: Sequence[int], + ) -> None: + """Atomically apply every level from one provider book update. + + Frozen Arrow validation proves row shape and PIT ordering before this method + is called. These defensive checks preserve the serial L2 contract while the + copy-on-write state lets one provider update replace both sides before the + final locked/crossed-book check. No live state changes until every level and + the resulting book have passed. + """ + if not self.initialized: + raise L2ReplayError("L2 replay must start from a BookSnapshot") + identity = (source, instrument_id, session_id) + expected_identity = (self._source, self._instrument_id, self._session_id) + if identity != expected_identity: + raise L2ReplayError( + f"L2 stream identity changed: expected={expected_identity}, actual={identity}" + ) + lengths = { + len(sequences), + len(previous_sequences), + len(sides), + len(actions), + len(price_units), + len(price_scales), + len(quantity_units), + len(quantity_scales), + } + if lengths == {0}: + raise L2ReplayError("L2 delta group must not be empty") + if len(lengths) != 1: + raise L2ReplayError("L2 delta group columns have different lengths") + self._assert_time_advances(event_time) + + staged_bids = self._bids.copy() + staged_asks = self._asks.copy() + expected_previous = int(self._sequence) + final_sequence = expected_previous + for ( + sequence_value, + previous_value, + side, + action, + price_value, + price_scale, + quantity_value, + quantity_scale, + ) in zip( + sequences, + previous_sequences, + sides, + actions, + price_units, + price_scales, + quantity_units, + quantity_scales, + strict=True, + ): + sequence = int(sequence_value) + previous_sequence = int(previous_value) + price = int(price_value) + price_scale_value = int(price_scale) + quantity = int(quantity_value) + quantity_scale_value = int(quantity_scale) + if previous_sequence != expected_previous: + raise L2ReplayError( + "L2 sequence gap, duplicate, or out-of-order delta: " + f"expected previous_sequence={expected_previous}, " + f"actual={previous_sequence}" + ) + if sequence <= previous_sequence: + raise L2ReplayError("L2 delta sequence must strictly advance") + if side not in {"bid", "ask"}: + raise L2ReplayError(f"Unsupported L2 side: {side!r}") + if action not in {"upsert", "delete"}: + raise L2ReplayError(f"Unsupported L2 action: {action!r}") + if price <= 0: + raise L2ReplayError("L2 delta price must be positive") + if price_scale_value != self._price_scale: + raise L2ReplayError( + f"L2 delta price scale changed: expected={self._price_scale}, " + f"actual={price_scale_value}" + ) + if quantity < 0: + raise L2ReplayError("L2 delta quantity must be non-negative") + if quantity_scale_value < 0 or quantity_scale_value > 18: + raise L2ReplayError("L2 delta quantity scale is outside [0, 18]") + if action == "delete" and quantity != 0: + raise L2ReplayError("L2 delete delta quantity must be zero") + if action == "upsert" and quantity == 0: + raise L2ReplayError("L2 upsert delta quantity must be positive") + + levels = staged_bids if side == "bid" else staged_asks + if action == "delete": + if price not in levels: + raise L2ReplayError("L2 delete references an absent price level") + del levels[price] + else: + levels[price] = ReconstructedLevel( + price_units=price, + price_scale=price_scale_value, + quantity_units=quantity, + quantity_scale=quantity_scale_value, + order_count=None, + ) + expected_previous = sequence + final_sequence = sequence + + self._assert_book_valid(staged_bids, staged_asks) + self._bids = staged_bids + self._asks = staged_asks + self._sequence = final_sequence + self._event_time = event_time + def _assert_identity(self, payload: Mapping[str, Any]) -> None: identity = ( str(payload["source"]), diff --git a/src/quant_data_kit/normalized_v3.py b/src/quant_data_kit/normalized_v3.py index 5369296..f09a350 100644 --- a/src/quant_data_kit/normalized_v3.py +++ b/src/quant_data_kit/normalized_v3.py @@ -8,7 +8,7 @@ import os import shutil import uuid -from collections.abc import Iterable, Iterator, Mapping +from collections.abc import Iterable, Iterator, Mapping, Sequence from contextlib import contextmanager from dataclasses import asdict, dataclass, field from datetime import date, datetime @@ -25,6 +25,7 @@ import pyarrow.parquet as pq from typing_extensions import Self +from quant_data_kit.adapters_v2.base import BOOK_SEQUENCE_FACTOR from quant_data_kit.data_lake import ( EventClaimIndexManifest, EventClaimReference, @@ -2063,6 +2064,138 @@ def _validate_l2_delta_columns(batch: pa.RecordBatch) -> None: _require_all(pc.or_(delete_ok, upsert_ok), "Arrow delta action and quantity disagree") +def _encoded_l2_group_ranges(batch: pa.RecordBatch) -> tuple[tuple[int, int], ...] | None: + """Return contiguous provider-update ranges for the adapter sequence encoding.""" + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + if batch.schema != schema or batch.num_rows == 0: + return None + sequences = batch.column(schema.get_field_index("sequence")).to_numpy( + zero_copy_only=False + ) + first_provider, first_level = divmod(int(sequences[0]), BOOK_SEQUENCE_FACTOR) + if first_provider <= 0 or first_level <= 0: + return None + ranges: list[tuple[int, int]] = [] + start = 0 + provider = first_provider + level = first_level + for index in range(1, len(sequences)): + current_provider, current_level = divmod( + int(sequences[index]), BOOK_SEQUENCE_FACTOR + ) + if current_provider == provider: + if current_level != level + 1: + return None + else: + if current_provider <= 0 or current_level != 1: + return None + ranges.append((start, index)) + start = index + provider = current_provider + level = current_level + ranges.append((start, len(sequences))) + return tuple(ranges) + + +def _try_apply_atomic_l2_delta_batch( + batch: pa.RecordBatch, + *, + last_sequences: dict[tuple[str, str, str, str], int], + books: dict[tuple[str, str, str], L2BookReconstructor], + expected_l2: Mapping[tuple[str, str, str], Mapping[int, str]], + reached_l2: dict[tuple[str, str, str], set[int]], +) -> tuple[_SortKey, _SortKey] | None: + """Apply complete multi-level provider updates atomically without row materialization.""" + ranges = _encoded_l2_group_ranges(batch) + if ranges is None: + return None + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + source = str(_uniform_value(batch.column(schema.get_field_index("source")), "source")) + instrument_id = str( + _uniform_value(batch.column(schema.get_field_index("instrument_id")), "instrument_id") + ) + session_id = str( + _uniform_value(batch.column(schema.get_field_index("session_id")), "session_id") + ) + stream_key = (source, instrument_id, session_id) + sequence = batch.column(schema.get_field_index("sequence")) + previous = batch.column(schema.get_field_index("previous_sequence")) + event_time = batch.column(schema.get_field_index("event_time")) + if batch.num_rows > 1: + _require_all( + pc.equal(previous.slice(1), sequence.slice(0, batch.num_rows - 1)), + "book_delta previous_sequence must equal prior stream sequence", + ) + _require_all( + pc.greater_equal(event_time.slice(1), event_time.slice(0, batch.num_rows - 1)), + "L2 event_time moved backwards", + ) + + sequence_values = sequence.to_numpy(zero_copy_only=False) + previous_values = previous.to_numpy(zero_copy_only=False) + expected = expected_l2.get(stream_key, {}) + for start, end in ranges: + first_sequence = int(sequence_values[start]) + final_sequence = int(sequence_values[end - 1]) + if first_sequence % BOOK_SEQUENCE_FACTOR != 1: + return None + if any(first_sequence <= checkpoint < final_sequence for checkpoint in expected): + return None + if event_time[start].as_py() != event_time[end - 1].as_py(): + return None + + price = batch.column(schema.get_field_index("price")) + quantity = batch.column(schema.get_field_index("quantity")) + sides = batch.column(schema.get_field_index("side")).to_pylist() + actions = batch.column(schema.get_field_index("action")).to_pylist() + price_units = price.field("units").to_numpy(zero_copy_only=False) + price_scales = price.field("scale").to_numpy(zero_copy_only=False) + quantity_units = quantity.field("units").to_numpy(zero_copy_only=False) + quantity_scales = quantity.field("scale").to_numpy(zero_copy_only=False) + book = books.setdefault(stream_key, L2BookReconstructor()) + sequence_key = (*stream_key, "book") + for start, end in ranges: + event_time_text = _cached_utc_text(event_time[start].as_py(), "event_time") + book._apply_validated_atomic_delta_group( + source=source, + instrument_id=instrument_id, + session_id=session_id, + event_time=event_time_text, + sequences=sequence_values[start:end], + previous_sequences=previous_values[start:end], + sides=sides[start:end], + actions=actions[start:end], + price_units=price_units[start:end], + price_scales=price_scales[start:end], + quantity_units=quantity_units[start:end], + quantity_scales=quantity_scales[start:end], + ) + final_sequence = int(sequence_values[end - 1]) + last_sequences[sequence_key] = final_sequence + if final_sequence in expected: + checkpoint = book.checkpoint() + if checkpoint.state_sha256 != expected[final_sequence]: + raise L2ReplayError( + f"L2 checkpoint hash mismatch at sequence {final_sequence}: " + f"expected={expected[final_sequence]}, actual={checkpoint.state_sha256}" + ) + reached_l2.setdefault(stream_key, set()).add(final_sequence) + + first_sequence = int(sequence_values[0]) + final_sequence = int(sequence_values[-1]) + first_key = ( + _utc_datetime(event_time[0].as_py(), "event_time"), + first_sequence, + str(batch.column(schema.get_field_index("event_id"))[0].as_py()), + ) + last_key = ( + _utc_datetime(event_time[-1].as_py(), "event_time"), + final_sequence, + str(batch.column(schema.get_field_index("event_id"))[-1].as_py()), + ) + return first_key, last_key + + def _try_apply_uniform_l2_delta_batch( batch: pa.RecordBatch, *, @@ -2163,14 +2296,22 @@ def _validate_record_batch( identity = _validate_common_arrow_batch(batch, provider=provider) if identity.schema_id == BOOK_DELTA_EVENT_SCHEMA_ID: _validate_l2_delta_columns(batch) - sort_keys = _try_apply_uniform_l2_delta_batch( + sort_keys = _try_apply_atomic_l2_delta_batch( batch, - identity=identity, last_sequences=last_sequences, books=books, expected_l2=expected_l2, reached_l2=reached_l2, ) + if sort_keys is None: + sort_keys = _try_apply_uniform_l2_delta_batch( + batch, + identity=identity, + last_sequences=last_sequences, + books=books, + expected_l2=expected_l2, + reached_l2=reached_l2, + ) if sort_keys is not None: return identity, *sort_keys rows = _logical_batch_rows(batch, identity.schema_id) @@ -2200,6 +2341,85 @@ def _iter_record_batches( yield batch +def _l2_group_key(batch: pa.RecordBatch, index: int) -> tuple[str, str, str, int]: + schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) + sequence = int(batch.column(schema.get_field_index("sequence"))[index].as_py()) + return ( + str(batch.column(schema.get_field_index("source"))[index].as_py()), + str(batch.column(schema.get_field_index("instrument_id"))[index].as_py()), + str(batch.column(schema.get_field_index("session_id"))[index].as_py()), + sequence // BOOK_SEQUENCE_FACTOR, + ) + + +def _concat_record_batches(batches: Sequence[pa.RecordBatch]) -> pa.RecordBatch: + if not batches: + raise ValidationError("Cannot concatenate an empty Arrow batch sequence") + if len(batches) == 1: + return batches[0] + schema = batches[0].schema + if any(batch.schema != schema for batch in batches[1:]): + raise ValidationError("Cannot concatenate Arrow batches with different schemas") + return pa.RecordBatch.from_arrays( + [ + pa.concat_arrays([batch.column(index) for batch in batches]) + for index in range(len(schema)) + ], + schema=schema, + ) + + +def _iter_atomic_l2_record_batches( + batches: Iterable[pa.RecordBatch] | pa.RecordBatchReader, +) -> Iterator[pa.RecordBatch]: + """Keep one encoded provider update intact across arbitrary input batch cuts.""" + pending: pa.RecordBatch | None = None + for batch in _iter_record_batches(batches): + ranges = _encoded_l2_group_ranges(batch) + if ranges is None: + if pending is not None: + yield pending + pending = None + yield batch + continue + + first_end = ranges[0][1] + last_start = ranges[-1][0] + first_piece = batch.slice(0, first_end) + joined_pending = False + if pending is not None: + pending_sequence = int( + pending.column(pending.schema.get_field_index("sequence"))[-1].as_py() + ) + first_sequence = int( + first_piece.column(first_piece.schema.get_field_index("sequence"))[0].as_py() + ) + if ( + _l2_group_key(pending, pending.num_rows - 1) + == _l2_group_key(first_piece, 0) + and first_sequence == pending_sequence + 1 + ): + first_piece = _concat_record_batches((pending, first_piece)) + joined_pending = True + else: + yield pending + pending = None + + if len(ranges) == 1: + pending = first_piece + continue + if joined_pending: + complete = [first_piece] + if first_end < last_start: + complete.append(batch.slice(first_end, last_start - first_end)) + yield _concat_record_batches(complete) + else: + yield batch.slice(0, last_start) + pending = batch.slice(last_start) + if pending is not None: + yield pending + + def _finalize_strict_batch_snapshot( lake_root: Path, stage: Path, @@ -2378,7 +2598,7 @@ def write_normalized_batches_v3( input_rows = 0 next_capacity_check = _CAPACITY_CHECK_ROWS try: - for batch in _iter_record_batches(batches): + for batch in _iter_atomic_l2_record_batches(batches): projected_rows = input_rows + batch.num_rows if projected_rows >= next_capacity_check: require_collection_capacity( diff --git a/tests/test_l2_replay.py b/tests/test_l2_replay.py index ebe335f..63f9a59 100644 --- a/tests/test_l2_replay.py +++ b/tests/test_l2_replay.py @@ -76,6 +76,26 @@ def delta( } +def apply_atomic_group( + reconstructor: L2BookReconstructor, + events: list[dict], +) -> None: + reconstructor._apply_validated_atomic_delta_group( + source=str(events[0]["source"]), + instrument_id=str(events[0]["instrument_id"]), + session_id=str(events[0]["session_id"]), + event_time=str(events[0]["event_time"]), + sequences=[int(event["sequence"]) for event in events], + previous_sequences=[int(event["previous_sequence"]) for event in events], + sides=[str(event["side"]) for event in events], + actions=[str(event["action"]) for event in events], + price_units=[int(event["price"]["units"]) for event in events], + price_scales=[int(event["price"]["scale"]) for event in events], + quantity_units=[int(event["quantity"]["units"]) for event in events], + quantity_scales=[int(event["quantity"]["scale"]) for event in events], + ) + + def test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic() -> None: events = [snapshot(), delta(101, 100), delta(102, 101, side="ask", price_units=100_100)] first = replay_l2(events) @@ -112,6 +132,175 @@ def test_crossed_delta_is_transactional_and_does_not_pollute_state() -> None: assert reconstructor.checkpoint() == initial +def test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once( + monkeypatch: pytest.MonkeyPatch, +) -> None: + events = [ + delta(101, 100, side="bid", price_units=100_000, quantity_units=26), + delta(102, 101, side="ask", price_units=100_100, quantity_units=27), + delta( + 103, + 102, + side="bid", + action="delete", + price_units=99_900, + quantity_units=0, + ), + delta(104, 103, side="bid", price_units=99_800, quantity_units=28), + ] + for event in events: + for field in ("event_time", "received_at", "available_at"): + event[field] = "2026-01-02T00:00:01Z" + + serial = L2BookReconstructor() + serial.apply_snapshot(snapshot()) + for event in events: + serial.apply_delta(event) + + atomic = L2BookReconstructor() + atomic.apply_snapshot(snapshot()) + real_assert = L2BookReconstructor._assert_book_valid + checks = 0 + + def counted_assert(bids, asks) -> None: + nonlocal checks + checks += 1 + real_assert(bids, asks) + + monkeypatch.setattr( + L2BookReconstructor, + "_assert_book_valid", + staticmethod(counted_assert), + ) + apply_atomic_group(atomic, events) + assert checks == 1 + assert atomic.checkpoint() == serial.checkpoint() + + +def test_atomic_multi_level_group_allows_transient_cross_but_commits_valid_final_book() -> None: + events = [ + delta(101, 100, side="bid", price_units=100_150, quantity_units=25), + delta( + 102, + 101, + side="ask", + action="delete", + price_units=100_100, + quantity_units=0, + ), + ] + for event in events: + for field in ("event_time", "received_at", "available_at"): + event[field] = "2026-01-02T00:00:01Z" + + serial = L2BookReconstructor() + serial.apply_snapshot(snapshot()) + with pytest.raises(L2ReplayError, match="locked or crossed"): + serial.apply_delta(events[0]) + + atomic = L2BookReconstructor() + atomic.apply_snapshot(snapshot()) + apply_atomic_group(atomic, events) + checkpoint = atomic.checkpoint() + assert checkpoint.sequence == 102 + assert checkpoint.bids[0].price_units == 100_150 + assert checkpoint.asks[0].price_units == 100_200 + + +@pytest.mark.parametrize( + ("mutate", "message"), + [ + (lambda events: events[1].update(previous_sequence=100), "gap, duplicate"), + (lambda events: events[1].update(sequence=101), "strictly advance"), + (lambda events: events[1].update(side="invalid"), "Unsupported L2 side"), + (lambda events: events[1].update(action="invalid"), "Unsupported L2 action"), + (lambda events: events[1]["price"].update(units=0), "price must be positive"), + (lambda events: events[1]["price"].update(scale=3), "price scale changed"), + (lambda events: events[1]["quantity"].update(units=-1), "non-negative"), + (lambda events: events[1]["quantity"].update(scale=-1), "outside"), + (lambda events: events[1]["quantity"].update(scale=19), "outside"), + ( + lambda events: ( + events[1].update(action="delete"), + events[1]["quantity"].update(units=1), + ), + "delete delta quantity", + ), + (lambda events: events[1]["quantity"].update(units=0), "upsert delta quantity"), + ( + lambda events: ( + events[1].update(action="delete"), + events[1]["price"].update(units=98_000), + events[1]["quantity"].update(units=0), + ), + "absent price level", + ), + (lambda events: events[1]["price"].update(units=100_100), "locked or crossed"), + ], +) +def test_atomic_multi_level_group_rejects_bad_row_and_rolls_back( + mutate, + message: str, +) -> None: + events = [delta(101, 100), delta(102, 101, price_units=99_900)] + for event in events: + for field in ("event_time", "received_at", "available_at"): + event[field] = "2026-01-02T00:00:01Z" + mutate(events) + reconstructor = L2BookReconstructor() + initial = reconstructor.apply_snapshot(snapshot()) + with pytest.raises(L2ReplayError, match=message): + apply_atomic_group(reconstructor, events) + assert reconstructor.checkpoint() == initial + + +def test_atomic_multi_level_group_defensive_entry_guards_preserve_state() -> None: + event = delta(101, 100) + arguments = { + "source": "binance", + "instrument_id": "BTC-USDT-SPOT", + "session_id": "binance-24x7-BTC-USDT-SPOT", + "event_time": event["event_time"], + "sequences": [101], + "previous_sequences": [100], + "sides": ["bid"], + "actions": ["upsert"], + "price_units": [100_000], + "price_scales": [2], + "quantity_units": [25], + "quantity_scales": [3], + } + uninitialized = L2BookReconstructor() + with pytest.raises(L2ReplayError, match="start from a BookSnapshot"): + uninitialized._apply_validated_atomic_delta_group(**arguments) + + reconstructor = L2BookReconstructor() + initial = reconstructor.apply_snapshot(snapshot()) + with pytest.raises(L2ReplayError, match="identity changed"): + reconstructor._apply_validated_atomic_delta_group(**{**arguments, "source": "okx"}) + empty = {name: [] for name in ( + "sequences", + "previous_sequences", + "sides", + "actions", + "price_units", + "price_scales", + "quantity_units", + "quantity_scales", + )} + with pytest.raises(L2ReplayError, match="must not be empty"): + reconstructor._apply_validated_atomic_delta_group(**{**arguments, **empty}) + with pytest.raises(L2ReplayError, match="different lengths"): + reconstructor._apply_validated_atomic_delta_group( + **{**arguments, "quantity_scales": [3, 3]} + ) + with pytest.raises(L2ReplayError, match="moved backwards"): + reconstructor._apply_validated_atomic_delta_group( + **{**arguments, "event_time": "2026-01-01T23:59:59Z"} + ) + assert reconstructor.checkpoint() == initial + + def test_delete_absent_level_and_price_scale_change_are_rejected() -> None: reconstructor = L2BookReconstructor() reconstructor.apply(snapshot()) diff --git a/tests/test_normalized_v3.py b/tests/test_normalized_v3.py index 0f73383..ef0c539 100644 --- a/tests/test_normalized_v3.py +++ b/tests/test_normalized_v3.py @@ -11,6 +11,7 @@ import quant_data_kit.data_lake as lake_module from quant_data_kit import normalized_v3 +from quant_data_kit.adapters_v2.base import BOOK_SEQUENCE_FACTOR from quant_data_kit.data_lake import ( CollectionStoppedError, StoragePolicy, @@ -295,6 +296,58 @@ def test_record_batch_reader_is_a_supported_strict_input(tmp_path: Path) -> None assert result.quarantined_rows == 0 +def test_encoded_dense_group_is_atomic_across_input_batch_boundary( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + initial = snapshot() + initial["sequence"] = 100 * BOOK_SEQUENCE_FACTOR + first = delta(101, 100, side="bid", price_units=100_150, quantity_units=25) + second = delta( + 102, + 101, + side="ask", + action="delete", + price_units=100_100, + quantity_units=0, + ) + first["sequence"] = 101 * BOOK_SEQUENCE_FACTOR + 1 + first["previous_sequence"] = initial["sequence"] + second["sequence"] = 101 * BOOK_SEQUENCE_FACTOR + 2 + second["previous_sequence"] = first["sequence"] + for index, event in enumerate((first, second), start=1): + event["event_id"] = f"encoded-delta-101-{index}" + for field in ("event_time", "received_at", "available_at"): + event[field] = "2026-01-02T00:00:01Z" + + applied_group_sizes: list[int] = [] + real_apply = normalized_v3.L2BookReconstructor._apply_validated_atomic_delta_group + + def observed_apply(self, **kwargs) -> None: + applied_group_sizes.append(len(kwargs["sequences"])) + real_apply(self, **kwargs) + + monkeypatch.setattr( + normalized_v3.L2BookReconstructor, + "_apply_validated_atomic_delta_group", + observed_apply, + ) + result = _strict_batches( + tmp_path, + [ + _record_batch([initial]), + _record_batch([first]), + _record_batch([second]), + ], + key="encoded-atomic-boundary", + ) + assert result.snapshot is not None + assert result.accepted_rows == 3 + assert applied_group_sizes == [2] + checkpoint = result.snapshot.l2_checkpoints[0] + assert checkpoint.sequence == second["sequence"] + + def test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries( tmp_path: Path, ) -> None: diff --git a/tests/test_normalized_v3_failures.py b/tests/test_normalized_v3_failures.py index 4c1b540..8b97cbe 100644 --- a/tests/test_normalized_v3_failures.py +++ b/tests/test_normalized_v3_failures.py @@ -14,6 +14,7 @@ import quant_data_kit.data_lake as lake_module from quant_data_kit import normalized_v3 +from quant_data_kit.adapters_v2.base import BOOK_SEQUENCE_FACTOR from quant_data_kit.data_lake import ( load_normalized_snapshot, write_normalized_batches, @@ -33,6 +34,28 @@ ) +def _encoded_delta_group( + provider_sequence: int, + previous_sequence: int, + *, + levels: int = 2, +) -> list[dict[str, Any]]: + records: list[dict[str, Any]] = [] + previous = previous_sequence + timestamp = f"2026-01-02T00:00:{provider_sequence - 100:02d}Z" + for index in range(1, levels + 1): + sequence = provider_sequence * BOOK_SEQUENCE_FACTOR + index + record = delta(101, 100, price_units=100_000 - index * 10) + record["event_id"] = f"encoded-{provider_sequence}-{index}" + record["sequence"] = sequence + record["previous_sequence"] = previous + for field in ("event_time", "received_at", "available_at"): + record[field] = timestamp + records.append(record) + previous = sequence + return records + + def _set_path(payload: dict[str, Any], path: tuple[str | int, ...], value: Any) -> None: target: Any = payload for part in path[:-1]: @@ -520,6 +543,199 @@ def test_arrow_input_reference_and_empty_batch_contracts(tmp_path: Path) -> None assert empty.accepted_rows == empty.quarantined_rows == 0 +def test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries() -> None: + first = _encoded_delta_group(101, 100 * BOOK_SEQUENCE_FACTOR) + second = _encoded_delta_group(102, first[-1]["sequence"]) + third = _encoded_delta_group(103, second[-1]["sequence"]) + expected_sequences = [event["sequence"] for event in (*first, *second, *third)] + + cut_batches = [ + _record_batch(first[:1]), + _record_batch([*first[1:], *second, *third[:1]]), + _record_batch(third[1:]), + ] + coalesced = list(normalized_v3._iter_atomic_l2_record_batches(cut_batches)) + assert [batch.num_rows for batch in coalesced] == [4, 2] + assert [ + value + for batch in coalesced + for value in batch.column(batch.schema.get_field_index("sequence")).to_pylist() + ] == expected_sequences + + whole = list( + normalized_v3._iter_atomic_l2_record_batches( + [_record_batch([*first, *second, *third])] + ) + ) + assert [batch.num_rows for batch in whole] == [4, 2] + + mismatched = list( + normalized_v3._iter_atomic_l2_record_batches( + [_record_batch(first[:1]), _record_batch(second)] + ) + ) + assert [batch.num_rows for batch in mismatched] == [1, 2] + + unencoded = list( + normalized_v3._iter_atomic_l2_record_batches( + [_record_batch(first[:1]), _record_batch([delta(101, 100)])] + ) + ) + assert [batch.num_rows for batch in unencoded] == [1, 1] + + +def test_encoded_group_layout_and_concat_helpers_fail_closed() -> None: + first = _encoded_delta_group(101, 100 * BOOK_SEQUENCE_FACTOR) + valid = _record_batch(first) + sequence_index = valid.schema.get_field_index("sequence") + noncontiguous = valid.set_column( + sequence_index, + valid.schema.field(sequence_index), + pa.array( + [101 * BOOK_SEQUENCE_FACTOR + 1, 101 * BOOK_SEQUENCE_FACTOR + 3], + type=pa.int64(), + ), + ) + wrong_boundary = valid.set_column( + sequence_index, + valid.schema.field(sequence_index), + pa.array( + [101 * BOOK_SEQUENCE_FACTOR + 1, 102 * BOOK_SEQUENCE_FACTOR + 2], + type=pa.int64(), + ), + ) + nonpositive_provider = valid.set_column( + sequence_index, + valid.schema.field(sequence_index), + pa.array([101 * BOOK_SEQUENCE_FACTOR + 1, 1], type=pa.int64()), + ) + group_zero = valid.set_column( + sequence_index, + valid.schema.field(sequence_index), + pa.array([1, 2], type=pa.int64()), + ) + assert normalized_v3._encoded_l2_group_ranges(valid) == ((0, 2),) + assert normalized_v3._encoded_l2_group_ranges(noncontiguous) is None + assert normalized_v3._encoded_l2_group_ranges(wrong_boundary) is None + assert normalized_v3._encoded_l2_group_ranges(nonpositive_provider) is None + assert normalized_v3._encoded_l2_group_ranges(group_zero) is None + assert normalized_v3._encoded_l2_group_ranges(valid.slice(0, 0)) is None + assert normalized_v3._encoded_l2_group_ranges(_record_batch([trade("trade")])) is None + + assert normalized_v3._concat_record_batches((valid,)) is valid + with pytest.raises(ValidationError, match="empty"): + normalized_v3._concat_record_batches(()) + with pytest.raises(ValidationError, match="different schemas"): + normalized_v3._concat_record_batches((valid, _record_batch([trade("trade")]))) + + +def test_encoded_group_checkpoint_and_time_fallbacks_remain_strict(tmp_path: Path) -> None: + initial = snapshot() + initial["sequence"] = 100 * BOOK_SEQUENCE_FACTOR + group = _encoded_delta_group(101, initial["sequence"]) + replayed_first = replay_l2([initial, group[0]]) + stream = ("binance", "BTC-USDT-SPOT", "binance-24x7-BTC-USDT-SPOT") + expected = {stream: {group[0]["sequence"]: replayed_first.final_checkpoint.state_sha256}} + checkpointed = _strict_batches( + tmp_path / "intermediate-checkpoint", + [_record_batch([initial]), _record_batch(group)], + key="intermediate-checkpoint", + expected_l2_checkpoint_hashes=expected, + ) + assert checkpointed.snapshot is not None + assert checkpointed.snapshot.l2_checkpoints[0].sequence == group[-1]["sequence"] + + different_time = deepcopy(group) + for field in ("event_time", "received_at", "available_at"): + different_time[1][field] = "2026-01-02T00:00:02Z" + timed = _strict_batches( + tmp_path / "different-time", + [_record_batch([initial]), _record_batch(different_time)], + key="different-time", + ) + assert timed.snapshot is not None + + single = _strict_batches( + tmp_path / "single-level", + [_record_batch([initial]), _record_batch(group[:1])], + key="single-level", + ) + assert single.snapshot is not None + + with pytest.raises(L2ReplayError, match="checkpoint hash mismatch"): + _strict_batches( + tmp_path / "final-mismatch", + [_record_batch([initial]), _record_batch(group)], + key="final-mismatch", + expected_l2_checkpoint_hashes={stream: {group[-1]["sequence"]: "0" * 64}}, + ) + _assert_no_snapshot(tmp_path / "final-mismatch") + + +@pytest.mark.parametrize( + ("case", "mutate", "message"), + [ + ( + "previous-gap", + lambda records: records[1].update(previous_sequence=records[0]["previous_sequence"]), + "previous_sequence", + ), + ( + "negative-quantity", + lambda records: records[1]["quantity"].update(units=-1), + "non-negative", + ), + ( + "price-scale", + lambda records: records[1]["price"].update(scale=3), + "price scale changed", + ), + ( + "pit", + lambda records: records[1].update(received_at="2026-01-02T00:00:00Z"), + "received_at must not be earlier", + ), + ( + "final-cross", + lambda records: records[1]["price"].update(units=100_100), + "locked or crossed", + ), + ], +) +def test_encoded_atomic_group_negative_gates_publish_nothing( + tmp_path: Path, + case: str, + mutate: Callable[[list[dict[str, Any]]], Any], + message: str, +) -> None: + initial = snapshot() + initial["sequence"] = 100 * BOOK_SEQUENCE_FACTOR + group = _encoded_delta_group(101, initial["sequence"]) + mutate(group) + root = tmp_path / case + with pytest.raises(ValidationError, match=message): + _strict_batches( + root, + [_record_batch([initial]), _record_batch(group)], + key=case, + ) + _assert_no_snapshot(root) + + +def test_encoded_atomic_group_duplicate_claim_is_not_bypassed(tmp_path: Path) -> None: + initial = snapshot() + initial["sequence"] = 100 * BOOK_SEQUENCE_FACTOR + group = _encoded_delta_group(101, initial["sequence"]) + group[1]["event_id"] = group[0]["event_id"] + with pytest.raises(ValidationError, match="duplicate claims"): + _strict_batches( + tmp_path, + [_record_batch([initial]), _record_batch(group)], + key="encoded-duplicate-claim", + ) + _assert_no_snapshot(tmp_path) + + def test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts(tmp_path: Path) -> None: events = [ snapshot(), From a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 01:55:54 +0800 Subject: [PATCH 09/16] style: format dense L2 remediation --- src/quant_data_kit/normalized_v3.py | 11 +++-------- tests/test_l2_replay.py | 23 +++++++++++++---------- tests/test_normalized_v3_failures.py | 4 +--- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/quant_data_kit/normalized_v3.py b/src/quant_data_kit/normalized_v3.py index f09a350..f462a44 100644 --- a/src/quant_data_kit/normalized_v3.py +++ b/src/quant_data_kit/normalized_v3.py @@ -2069,9 +2069,7 @@ def _encoded_l2_group_ranges(batch: pa.RecordBatch) -> tuple[tuple[int, int], .. schema = get_arrow_schema(BOOK_DELTA_EVENT_SCHEMA_ID) if batch.schema != schema or batch.num_rows == 0: return None - sequences = batch.column(schema.get_field_index("sequence")).to_numpy( - zero_copy_only=False - ) + sequences = batch.column(schema.get_field_index("sequence")).to_numpy(zero_copy_only=False) first_provider, first_level = divmod(int(sequences[0]), BOOK_SEQUENCE_FACTOR) if first_provider <= 0 or first_level <= 0: return None @@ -2080,9 +2078,7 @@ def _encoded_l2_group_ranges(batch: pa.RecordBatch) -> tuple[tuple[int, int], .. provider = first_provider level = first_level for index in range(1, len(sequences)): - current_provider, current_level = divmod( - int(sequences[index]), BOOK_SEQUENCE_FACTOR - ) + current_provider, current_level = divmod(int(sequences[index]), BOOK_SEQUENCE_FACTOR) if current_provider == provider: if current_level != level + 1: return None @@ -2395,8 +2391,7 @@ def _iter_atomic_l2_record_batches( first_piece.column(first_piece.schema.get_field_index("sequence"))[0].as_py() ) if ( - _l2_group_key(pending, pending.num_rows - 1) - == _l2_group_key(first_piece, 0) + _l2_group_key(pending, pending.num_rows - 1) == _l2_group_key(first_piece, 0) and first_sequence == pending_sequence + 1 ): first_piece = _concat_record_batches((pending, first_piece)) diff --git a/tests/test_l2_replay.py b/tests/test_l2_replay.py index 63f9a59..39f1706 100644 --- a/tests/test_l2_replay.py +++ b/tests/test_l2_replay.py @@ -278,16 +278,19 @@ def test_atomic_multi_level_group_defensive_entry_guards_preserve_state() -> Non initial = reconstructor.apply_snapshot(snapshot()) with pytest.raises(L2ReplayError, match="identity changed"): reconstructor._apply_validated_atomic_delta_group(**{**arguments, "source": "okx"}) - empty = {name: [] for name in ( - "sequences", - "previous_sequences", - "sides", - "actions", - "price_units", - "price_scales", - "quantity_units", - "quantity_scales", - )} + empty = { + name: [] + for name in ( + "sequences", + "previous_sequences", + "sides", + "actions", + "price_units", + "price_scales", + "quantity_units", + "quantity_scales", + ) + } with pytest.raises(L2ReplayError, match="must not be empty"): reconstructor._apply_validated_atomic_delta_group(**{**arguments, **empty}) with pytest.raises(L2ReplayError, match="different lengths"): diff --git a/tests/test_normalized_v3_failures.py b/tests/test_normalized_v3_failures.py index 8b97cbe..1d7c643 100644 --- a/tests/test_normalized_v3_failures.py +++ b/tests/test_normalized_v3_failures.py @@ -563,9 +563,7 @@ def test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries() - ] == expected_sequences whole = list( - normalized_v3._iter_atomic_l2_record_batches( - [_record_batch([*first, *second, *third])] - ) + normalized_v3._iter_atomic_l2_record_batches([_record_batch([*first, *second, *third])]) ) assert [batch.num_rows for batch in whole] == [4, 2] From 33e7202169fe1456ec6602335e41a51f535e6f11 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 18:41:05 +0800 Subject: [PATCH 10/16] test: certify M7 capture core remediation --- ...6f4af4fc1c2d6224296cb98f2d914e64a25ee.json | 1 + ...8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json | 1 + ...586f906e34cef611d28ad5301629d7305903b.json | 703 ++++++++++++++++++ ...8807a23269e634320b1eeec3f5f451907e1b7.json | 1 + ...5255ef202915befa63c34836cefebf4ca171e.json | 1 + ...292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json | 1 + ...02f4b0e69f890bf088ed115c2d2a4e742d2a6.json | 1 + ...cfb7626e8394ddf8e8425861ee9104a53528e7.xml | 1 + ...d8b46d01e2612428bbca3f7ba1c5324355954.json | 1 + ...82ea6d3c0366bbbdedcfc5932c42d8bff2481.json | 1 + ...0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json | 1 + .../evidence-manifest.json | 81 ++ .../m7-capture-remediation-v2/summary.md | 95 +++ .../technical-handoff.md | 60 ++ 14 files changed, 949 insertions(+) create mode 100644 validation/m7-capture-remediation-v2/artifacts/capacity-preflight-refusal-sha256-a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/capacity-run-refusal-sha256-f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/data-10m-3run-sha256-0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/dense-round-01-sha256-574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/dense-round-02-sha256-14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/dense-round-03-sha256-737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/full-coverage-sha256-9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/full-pytest-junit-sha256-d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7.xml create mode 100644 validation/m7-capture-remediation-v2/artifacts/sparse-round-01-sha256-00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/sparse-round-02-sha256-fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481.json create mode 100644 validation/m7-capture-remediation-v2/artifacts/sparse-round-03-sha256-917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json create mode 100644 validation/m7-capture-remediation-v2/evidence-manifest.json create mode 100644 validation/m7-capture-remediation-v2/summary.md create mode 100644 validation/m7-capture-remediation-v2/technical-handoff.md diff --git a/validation/m7-capture-remediation-v2/artifacts/capacity-preflight-refusal-sha256-a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee.json b/validation/m7-capture-remediation-v2/artifacts/capacity-preflight-refusal-sha256-a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee.json new file mode 100644 index 0000000..150da01 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/capacity-preflight-refusal-sha256-a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","continuous_days":0,"ended_at":"2026-08-30T10:37:28.574070Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"0b582a3f518c3418fa16f61c236be2b176fe61f00b7dc1465afd027b78cc08b6","run_id":"capture-3ea8678dbc0a4fcdab34e56ab902ffbd","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T10:37:28.570070Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/capacity-run-refusal-sha256-f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json b/validation/m7-capture-remediation-v2/artifacts/capacity-run-refusal-sha256-f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json new file mode 100644 index 0000000..a26a979 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/capacity-run-refusal-sha256-f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","continuous_days":0,"ended_at":"2026-08-30T10:37:29.294556Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"c0fda295b6604b261eb0fa9bd5691063026ed86f1b84c2cec46967002ebf5ba3","run_id":"capture-5b0c7a78ce284e25987748b8c8e58054","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T10:37:29.290558Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=66346708992, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/data-10m-3run-sha256-0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b.json b/validation/m7-capture-remediation-v2/artifacts/data-10m-3run-sha256-0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b.json new file mode 100644 index 0000000..f5d8e08 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/data-10m-3run-sha256-0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c", + "dirty": false + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.7.1", + "temp_environment": { + "TEMP": "F:\\puresaber-m7-temp-core-a11a0c2-final2", + "TMP": "F:\\puresaber-m7-temp-core-a11a0c2-final2", + "tempfile_gettempdir": "F:\\puresaber-m7-temp-core-a11a0c2-final2" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 8959442944, + "total_bytes": 321320923136, + "used_bytes": 312361480192 + }, + "F:\\": { + "free_bytes": 303526862848, + "total_bytes": 594535321600, + "used_bytes": 291008458752 + }, + "H:\\": { + "free_bytes": 227408809984, + "total_bytes": 998553677824, + "used_bytes": 771144867840 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 8955908096, + "total_bytes": 321320923136, + "used_bytes": 312365015040 + }, + "F:\\": { + "free_bytes": 303526866944, + "total_bytes": 594535321600, + "used_bytes": 291008454656 + }, + "H:\\": { + "free_bytes": 230719799296, + "total_bytes": 998553677824, + "used_bytes": 767833878528 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\m7-data-10m-artifacts-a11a0c2-final2" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 84.94571770000039, + "events_per_second": 117722.2380452023, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3320250368, + "peak_rss_gib": 3.09222412109375, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 6.600001142942347e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.850000085658394e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 28.63201130000016 + }, + "_claim_database": { + "calls": 1, + "seconds": 29.216441399999894 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.081898899999942 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 4.421404199998506 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 0.0008866000007401453 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 2.1352355999988504 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 2.0243903000009595 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.908995199999481 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 36.163180000001375 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.66306110000005, + "events_per_second": 186347.92341356, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3345653760, + "peak_rss_gib": 3.1158828735351562, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 7.200000254670158e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.809999988239724e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.721059499999683 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.531402299999172 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0979913999999553 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.244924300001003 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.489999941550195e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4487643000011303 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4440481000001455 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6781749000001582 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.338877000001958 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 51.26586230000066, + "events_per_second": 195061.57804352138, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3338809344, + "peak_rss_gib": 3.109508514404297, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 5.100000635138713e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.9100000220933e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 13.750630500000625 + }, + "_claim_database": { + "calls": 1, + "seconds": 20.427045000000362 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0733273000005283 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.1029858000019885 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.300000131886918e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4233939999994618 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4032028000001446 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6680188999998791 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 26.06042239999806 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 3.1158828735351562, + "median_events_per_second": 186347.92341356, + "minimum_events_per_second": 117722.2380452023, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/m7-capture-remediation-v2/artifacts/dense-round-01-sha256-574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7.json b/validation/m7-capture-remediation-v2/artifacts/dense-round-01-sha256-574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7.json new file mode 100644 index 0000000..00c9dbf --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/dense-round-01-sha256-574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.2978143557278297,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.29781435572783},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-29T17:57:04.325719Z","report_sha256":"8879111349721816ad41a1ae9659780f95c1738fb7e189cf404f421c851c54bf","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":30.323113799997373,"event_loop_delay_p95_milliseconds":25.88350000587525,"event_loop_delay_p99_milliseconds":46.00629999913508,"event_loop_delay_samples":1335,"last_epoch_submit_seconds":17.881212699998287,"normalization_group_window_seconds":12.377143099998648,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":10542.716757539185,"throughput_websocket_messages_per_second":263.8251484582264,"total_wall_seconds":30.44517430000269,"worker_teardown_seconds":0.12206050000531832,"workload_elapsed_seconds":30.323113799997373},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/dense-round-02-sha256-14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e.json b/validation/m7-capture-remediation-v2/artifacts/dense-round-02-sha256-14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e.json new file mode 100644 index 0000000..9c0d47f --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/dense-round-02-sha256-14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.412698317359503,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.412698317359503},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-29T17:57:34.874404Z","report_sha256":"301a72bb28b51f9e0ff0746d2d255cefd055ee995ad3f35ae613efff31264146","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":29.30232640000031,"event_loop_delay_p95_milliseconds":28.677300004346762,"event_loop_delay_p99_milliseconds":47.88340000231983,"event_loop_delay_samples":1237,"last_epoch_submit_seconds":18.374566200000118,"normalization_group_window_seconds":10.89576980000129,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":10909.986996800248,"throughput_websocket_messages_per_second":273.01586538876023,"total_wall_seconds":29.3777207000021,"worker_teardown_seconds":0.07539430000178982,"workload_elapsed_seconds":29.30232640000031},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/dense-round-03-sha256-737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json b/validation/m7-capture-remediation-v2/artifacts/dense-round-03-sha256-737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json new file mode 100644 index 0000000..be878f6 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/dense-round-03-sha256-737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.663602655327697,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.663602655327697},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-29T17:58:03.262619Z","report_sha256":"a41df61a4b6a498aecd875813fce09c298c6cdf5b030dd3e62568e6f5e7d26f4","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":27.295536500001617,"event_loop_delay_p95_milliseconds":24.312100002134684,"event_loop_delay_p99_milliseconds":42.18790000595618,"event_loop_delay_samples":1329,"last_epoch_submit_seconds":16.445701999997254,"normalization_group_window_seconds":10.816880800004583,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":11712.098056764009,"throughput_websocket_messages_per_second":293.08821242621576,"total_wall_seconds":27.369237099999737,"worker_teardown_seconds":0.07370059999811929,"workload_elapsed_seconds":27.295536500001617},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/full-coverage-sha256-9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6.json b/validation/m7-capture-remediation-v2/artifacts/full-coverage-sha256-9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6.json new file mode 100644 index 0000000..0381736 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/full-coverage-sha256-9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.16.0", "timestamp": "2026-08-30T02:00:08.194987", "branch_coverage": true, "show_contexts": false}, "files": {"src\\quant_data_kit\\__init__.py": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\_version.py": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\__init__.py": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\base.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 41, 42, 43, 44, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 142, 143, 144, 145, 146, 151, 153, 154, 156, 169, 170, 171, 172, 173, 177, 178, 179, 181, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 216, 217, 218, 219], "summary": {"covered_lines": 124, "num_statements": 126, "percent_covered": 97.46835443037975, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 6, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 2, "covered_branches": 30, "missing_branches": 2, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [45, 193], "excluded_lines": [50, 51, 52, 53, 54, 55], "executed_branches": [[43, 44], [57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99], [133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[43, 45], [192, 193]], "functions": {"AdapterContext.instrument": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "AdapterContext.session_id": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter.transaction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51], "start_line": 51, "executed_branches": [], "missing_branches": []}, "ProviderAdapter.adapt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [53], "start_line": 53, "executed_branches": [], "missing_branches": []}, "utc_from_milliseconds": {"executed_lines": [57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "utc_from_text": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73]], "missing_branches": []}, "fixed": {"executed_lines": [77, 78, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "event_identity": {"executed_lines": [95, 96, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [[95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}, "BookSequenceNormalizer.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.transaction": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.snapshot": {"executed_lines": [132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[133, 134], [133, 135]], "missing_branches": []}, "BookSequenceNormalizer.heartbeat": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [[142, 143], [142, 144], [145, -140], [145, 146]], "missing_branches": []}, "BookSequenceNormalizer.reset": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.advance_without_levels": {"executed_lines": [169, 170, 171, 172, 173, 177, 178, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179]], "missing_branches": []}, "BookSequenceNormalizer.delta": {"executed_lines": [189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [193], "excluded_lines": [], "start_line": 181, "executed_branches": [[189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "adapt_fixture_messages": {"executed_lines": [216, 217, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 66, 76, 84, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AdapterInstrument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "AdapterContext": {"executed_lines": [34, 35, 36, 37, 42, 43, 44], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 27, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51, 53], "start_line": 48, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer": {"executed_lines": [116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 146, 153, 154, 169, 170, 171, 172, 173, 177, 178, 179, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [193], "excluded_lines": [], "start_line": 112, "executed_branches": [[133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212, 216, 217, 218, 219], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [[57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\binance.py": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 69, "num_statements": 70, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]], "functions": {"BinanceFixtureAdapter.__init__": {"executed_lines": [40, 41, 42, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, 41], [40, 42]], "missing_branches": []}, "BinanceFixtureAdapter._event_id": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.transaction": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.adapt": {"executed_lines": [56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 55, "executed_branches": [[63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BinanceFixtureAdapter": {"executed_lines": [40, 41, 42, 43, 44, 47, 48, 52, 53, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32, "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\cn_neutral.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 109, 110, 111], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": [], "functions": {"CNNeutralFixtureAdapter.__init__": {"executed_lines": [32, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [[32, 33], [32, 34]], "missing_branches": []}, "CNNeutralFixtureAdapter.transaction": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CNNeutralFixtureAdapter.adapt": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "CNNeutralFixtureAdapter._level": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CNNeutralFixtureAdapter": {"executed_lines": [32, 33, 34, 35, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 111], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\okx.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 86, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 293, 294, 295, 296], "summary": {"covered_lines": 146, "num_statements": 152, "percent_covered": 95.09803921568627, "percent_covered_display": "95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.05263157894737, "percent_statements_covered_display": "96", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]], "functions": {"OKXFixtureAdapter.__init__": {"executed_lines": [44, 45, 46, 47, 48, 49], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 46]], "missing_branches": []}, "OKXFixtureAdapter.transaction": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[62, 63], [62, 66]], "missing_branches": []}, "OKXFixtureAdapter._book_transaction": {"executed_lines": [70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [[76, 77], [76, 79], [80, 81], [80, 83]], "missing_branches": []}, "OKXFixtureAdapter._require_fresh_snapshot": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._signed_crc32": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._checksum": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 106], [102, 103], [104, 101], [104, 105]], "missing_branches": [[102, 104]]}, "OKXFixtureAdapter._apply_book_message": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [123, 127, 132, 133], "excluded_lines": [], "start_line": 109, "executed_branches": [[116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135]], "missing_branches": [[122, 123], [126, 127]]}, "OKXFixtureAdapter.adapt": {"executed_lines": [138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.34146341463415, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [229, 234], "excluded_lines": [], "start_line": 137, "executed_branches": [[145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[228, 229]]}, "OKXFixtureAdapter._book_level": {"executed_lines": [295, 296], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"OKXFixtureAdapter": {"executed_lines": [44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 87, 88, 89, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 295, 296], "summary": {"covered_lines": 118, "num_statements": 124, "percent_covered": 94.31818181818181, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.16129032258064, "percent_statements_covered_display": "95", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "start_line": 35, "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\calendar.py": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]], "functions": {"trading_days_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": [[14, 15], [14, 16]]}, "load_sse_trade_dates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [22, 24, 25, 26, 27], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "is_trading_day": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [31, 32, 33, 34], "excluded_lines": [], "start_line": 30, "executed_branches": [], "missing_branches": [[32, 33], [32, 34]]}, "": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]]}}}, "src\\quant_data_kit\\capture_v2\\__init__.py": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]], "functions": {"_reject_credentials": {"executed_lines": [53, 54, 55, 56, 57, 60, 61, 62, 63], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63]], "missing_branches": []}, "load_capture_config": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89]], "missing_branches": []}, "_streams": {"executed_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [[106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117]], "missing_branches": []}, "_parser": {"executed_lines": [128, 132, 133, 139, 145, 150], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "main_capture": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 153, "executed_branches": [[158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 66, 105, 127, 153, 186], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [187], "excluded_lines": [], "start_line": 1, "executed_branches": [[186, -1]], "missing_branches": [[186, 187]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]]}}}, "src\\quant_data_kit\\capture_v2\\collector.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 335, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 365, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 393, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 438, 445, 446, 447, 448, 449, 450, 451, 467, 468, 469, 470, 471, 472, 473, 474, 475, 481, 482, 483, 484, 485, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 557, 558, 559, 560, 563, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 615, 618, 634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 663, 664, 666, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 690, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 711, 712, 749, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 766, 767, 768, 769, 770, 773, 774, 775, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 797, 798, 799, 802, 803, 805, 814, 815, 818, 831, 832, 835, 865, 875, 876, 884, 885, 901, 902, 903, 904, 905, 906, 909, 910, 911, 912, 913, 914, 915], "summary": {"covered_lines": 456, "num_statements": 476, "percent_covered": 94.8943661971831, "percent_covered_display": "95", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 95.7983193277311, "percent_statements_covered_display": "96", "num_branches": 92, "num_partial_branches": 9, "covered_branches": 83, "missing_branches": 9, "percent_branches_covered": 90.21739130434783, "percent_branches_covered_display": "90"}, "missing_lines": [146, 147, 231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555, 673, 729, 730, 741, 765, 804], "excluded_lines": [], "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144], [229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569], [711, 712], [711, 749], [758, 759], [758, 798], [760, 761], [760, 778], [774, 760], [774, 775], [778, 758], [778, 779], [779, 780], [779, 781], [784, 785], [784, 787], [785, 786], [803, 805]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555], [785, 784], [803, 804]], "functions": {"_json_object": {"executed_lines": [117, 118, 119, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125]], "missing_branches": []}, "_frame_metadata": {"executed_lines": [129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 128, "executed_branches": [[130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}, "CaptureStreamRunner.__init__": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner.run": {"executed_lines": [227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303], "summary": {"covered_lines": 61, "num_statements": 67, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.04477611940298, "percent_statements_covered_display": "91", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "79"}, "missing_lines": [231, 232, 238, 296, 297, 301], "excluded_lines": [], "start_line": 226, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292]], "missing_branches": [[230, 231], [234, 238], [291, 301]]}, "CaptureStreamRunner._handle_cancellation": {"executed_lines": [306, 307, 308, 309, 310, 311], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 305, "executed_branches": [[308, 309]], "missing_branches": [[308, 310]]}, "CaptureStreamRunner._run_connection": {"executed_lines": [314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313, "executed_branches": [[328, 329], [328, 331]], "missing_branches": []}, "CaptureStreamRunner._run_binance": {"executed_lines": [340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[354, 355], [354, 356], [358, -335], [358, 362]], "missing_branches": []}, "CaptureStreamRunner._run_okx": {"executed_lines": [370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [[381, 382], [381, 384], [386, -365], [386, 390]], "missing_branches": []}, "CaptureStreamRunner._receive_frame": {"executed_lines": [394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393, "executed_branches": [[394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436]], "missing_branches": []}, "CaptureStreamRunner._https_frame": {"executed_lines": [445, 446, 447, 448, 449, 450, 451], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._apply_outcome": {"executed_lines": [468, 469, 470, 471, 472, 473, 474, 475], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475]], "missing_branches": []}, "CaptureStreamRunner._new_epoch": {"executed_lines": [482, 483, 484, 485], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481, "executed_branches": [[482, 483], [482, 484]], "missing_branches": []}, "CaptureStreamRunner._drain_segments": {"executed_lines": [501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 500, "executed_branches": [[501, -500], [501, 502], [503, 504], [503, 505], [505, 506]], "missing_branches": [[505, 507]]}, "CaptureStreamRunner._finalize_epoch": {"executed_lines": [511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 510, "executed_branches": [[511, 512], [511, 513], [514, 515], [514, 519]], "missing_branches": []}, "CaptureStreamRunner._terminal_cleanup": {"executed_lines": [524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 523, "executed_branches": [[536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523]], "missing_branches": [[547, 548], [554, 555]]}, "CaptureStreamRunner._pause": {"executed_lines": [558, 559, 560, 563, 564], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "CaptureStreamRunner._alert": {"executed_lines": [567, 568, 569], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[567, 568], [567, 569]], "missing_branches": []}, "CaptureStreamRunner._report": {"executed_lines": [572, 573, 574, 575, 576], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.__init__": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight": {"executed_lines": [664], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight_only": {"executed_lines": [667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [673], "excluded_lines": [], "start_line": 666, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.run": {"executed_lines": [691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 711, 712, 749, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 766, 767, 768, 769, 770, 773, 774, 775, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 797, 798, 799, 802, 803, 805], "summary": {"covered_lines": 49, "num_statements": 54, "percent_covered": 90.27777777777777, "percent_covered_display": "90", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 90.74074074074075, "percent_statements_covered_display": "91", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [729, 730, 741, 765, 804], "excluded_lines": [], "start_line": 690, "executed_branches": [[711, 712], [711, 749], [758, 759], [758, 798], [760, 761], [760, 778], [774, 760], [774, 775], [778, 758], [778, 779], [779, 780], [779, 781], [784, 785], [784, 787], [785, 786], [803, 805]], "missing_branches": [[785, 784], [803, 804]]}, "CryptoL2CaptureCoordinator._stream_succeeded": {"executed_lines": [818], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._empty_stream_report": {"executed_lines": [835], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 832, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._write_report": {"executed_lines": [875, 876, 884, 885, 901, 902, 903, 904, 905, 906, 909, 910, 911, 912, 913, 914, 915], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 865, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 128, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 814, 815, 831, 832, 865], "summary": {"covered_lines": 97, "num_statements": 97, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CaptureStreamReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [], "missing_branches": []}, "CaptureRunReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 311, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 445, 446, 447, 448, 449, 450, 451, 468, 469, 470, 471, 472, 473, 474, 475, 482, 483, 484, 485, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 558, 559, 560, 563, 564, 567, 568, 569, 572, 573, 574, 575, 576], "summary": {"covered_lines": 243, "num_statements": 255, "percent_covered": 94.0809968847352, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 95.29411764705883, "percent_statements_covered_display": "95", "num_branches": 66, "num_partial_branches": 7, "covered_branches": 59, "missing_branches": 7, "percent_branches_covered": 89.39393939393939, "percent_branches_covered_display": "89"}, "missing_lines": [231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 151, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555]]}, "CryptoL2CaptureCoordinator": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 664, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 711, 712, 749, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 766, 767, 768, 769, 770, 773, 774, 775, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 797, 798, 799, 802, 803, 805, 818, 835, 875, 876, 884, 885, 901, 902, 903, 904, 905, 906, 909, 910, 911, 912, 913, 914, 915], "summary": {"covered_lines": 94, "num_statements": 100, "percent_covered": 93.22033898305085, "percent_covered_display": "93", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.0, "percent_statements_covered_display": "94", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [673, 729, 730, 741, 765, 804], "excluded_lines": [], "start_line": 615, "executed_branches": [[711, 712], [711, 749], [758, 759], [758, 798], [760, 761], [760, 778], [774, 760], [774, 775], [778, 758], [778, 779], [779, 780], [779, 781], [784, 785], [784, 787], [785, 786], [803, 805]], "missing_branches": [[785, 784], [803, 804]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 814, 815, 831, 832, 865], "summary": {"covered_lines": 119, "num_statements": 121, "percent_covered": 98.44961240310077, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.34710743801652, "percent_statements_covered_display": "98", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\epoch.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 26, 31, 32, 38, 39, 40, 41, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 84, 85, 86, 89, 92, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 169, 174, 175, 176, 177, 178, 179, 180, 181, 182, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 213, 214, 233, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 293, 294, 295, 296, 297, 298, 299, 302, 303, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 334, 335, 336, 337, 355, 356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 396, 397, 398, 399, 400, 402, 403, 404, 416, 417, 418, 423, 425, 426, 435, 436, 437, 439, 442, 443, 447, 448, 449, 450, 451, 453, 454, 456, 457, 458, 460, 461, 462, 463, 464, 465, 468, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 484, 485, 486, 489, 492, 493, 494, 495, 496, 497, 506, 507, 508, 509, 510, 511, 512, 515, 524, 532, 539, 553, 554, 555, 556, 557, 558, 559, 563, 564, 566, 567, 568, 570, 571, 579, 580, 581, 582], "summary": {"covered_lines": 331, "num_statements": 336, "percent_covered": 98.30917874396135, "percent_covered_display": "98", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 98.51190476190476, "percent_statements_covered_display": "99", "num_branches": 78, "num_partial_branches": 2, "covered_branches": 76, "missing_branches": 2, "percent_branches_covered": 97.43589743589743, "percent_branches_covered_display": "97"}, "missing_lines": [440, 466, 467, 502, 503], "excluded_lines": [], "executed_branches": [[84, 85], [84, 86], [109, 110], [109, 111], [111, 112], [111, 113], [151, 152], [151, 161], [154, 157], [154, 159], [161, -147], [161, 162], [166, -164], [166, 167], [182, 187], [182, 188], [188, 166], [188, 189], [193, 194], [193, 195], [204, 205], [204, 206], [241, 242], [241, 243], [245, 246], [245, 247], [247, 248], [247, 249], [266, 267], [266, 274], [268, 269], [268, 270], [278, 279], [278, 280], [281, 282], [281, 283], [297, 298], [297, 299], [323, 324], [323, 335], [356, 357], [356, 358], [358, 359], [358, 360], [360, 361], [379, 380], [379, 381], [435, 436], [435, 437], [447, 448], [447, 449], [457, -456], [457, 458], [462, -460], [462, 463], [472, -471], [472, 473], [474, 475], [474, 476], [477, 472], [477, 478], [484, 485], [484, 486], [494, 495], [494, 511], [506, 507], [506, 509], [511, 512], [553, 554], [553, 555], [559, 563], [559, 564], [567, -566], [567, 568], [579, 580], [579, 581]], "missing_branches": [[360, 363], [511, -489]], "functions": {"_sha256_file": {"executed_lines": [82, 83, 84, 85, 86], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [[84, 85], [84, 86]], "missing_branches": []}, "NormalizedEpochJournal.__init__": {"executed_lines": [109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [[109, 110], [109, 111], [111, 112], [111, 113]], "missing_branches": []}, "NormalizedEpochJournal.append": {"executed_lines": [148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147, "executed_branches": [[151, 152], [151, 161], [154, 157], [154, 159], [161, -147], [161, 162]], "missing_branches": []}, "NormalizedEpochJournal._append_bodies": {"executed_lines": [165, 166, 167, 168, 169, 174, 175, 176, 177, 178, 179, 180, 181, 182, 187, 188, 189], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164, "executed_branches": [[166, -164], [166, 167], [182, 187], [182, 188], [188, 166], [188, 189]], "missing_branches": []}, "NormalizedEpochJournal.flush": {"executed_lines": [192, 193, 194, 195, 196, 197, 198, 199], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[193, 194], [193, 195]], "missing_branches": []}, "NormalizedEpochJournal.record_segment": {"executed_lines": [202, 203, 204, 205, 206, 207], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[204, 205], [204, 206]], "missing_branches": []}, "NormalizedEpochJournal.records": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.recover": {"executed_lines": [233, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214, "executed_branches": [[241, 242], [241, 243], [245, 246], [245, 247], [247, 248], [247, 249], [266, 267], [266, 274], [268, 269], [268, 270], [278, 279], [278, 280], [281, 282], [281, 283]], "missing_branches": []}, "NormalizedEpochJournal.finalize": {"executed_lines": [294, 295, 296, 297, 298, 299, 302, 303, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 334, 335, 336, 337], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293, "executed_branches": [[297, 298], [297, 299], [323, 324], [323, 335]], "missing_branches": []}, "NormalizedEpochJournal.abort_visible": {"executed_lines": [356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [[356, 357], [356, 358], [358, 359], [358, 360], [360, 361]], "missing_branches": [[360, 363]]}, "NormalizedEpochJournal._seal_part": {"executed_lines": [379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 396, 397, 398, 399, 400], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381]], "missing_branches": []}, "NormalizedEpochJournal._record_finalize_failure": {"executed_lines": [403, 404, 416, 417, 418, 423], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._publish_normalized": {"executed_lines": [426, 435, 436, 437], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[435, 436], [435, 437]], "missing_branches": []}, "NormalizedEpochJournal._iter_record_batches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [440], "excluded_lines": [], "start_line": 439, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._record_batch": {"executed_lines": [447, 448, 449, 450, 451], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443, "executed_branches": [[447, 448], [447, 449]], "missing_branches": []}, "NormalizedEpochJournal._iter_records": {"executed_lines": [454], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._require_open": {"executed_lines": [457, 458], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456, "executed_branches": [[457, -456], [457, 458]], "missing_branches": []}, "NormalizedEpochJournal.__del__": {"executed_lines": [461, 462, 463, 464, 465, 468], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [466, 467], "excluded_lines": [], "start_line": 460, "executed_branches": [[462, -460], [462, 463]], "missing_branches": []}, "_iter_epoch_records": {"executed_lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 484, 485, 486], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [[472, -471], [472, 473], [474, 475], [474, 476], [477, 472], [477, 478], [484, 485], [484, 486]], "missing_branches": []}, "_iter_epoch_record_batches": {"executed_lines": [492, 493, 494, 495, 496, 497, 506, 507, 508, 509, 510, 511, 512], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [502, 503], "excluded_lines": [], "start_line": 489, "executed_branches": [[494, 495], [494, 511], [506, 507], [506, 509], [511, 512]], "missing_branches": [[511, -489]]}, "_publish_epoch_parts": {"executed_lines": [524, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "_publish_epoch_group": {"executed_lines": [553, 554, 555, 556, 557, 558, 559, 563, 564, 566, 570, 571, 579, 580, 581, 582], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 539, "executed_branches": [[553, 554], [553, 555], [559, 563], [559, 564], [579, 580], [579, 581]], "missing_branches": []}, "_publish_epoch_group.batches": {"executed_lines": [567, 568], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[567, -566], [567, 568]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 26, 31, 32, 38, 39, 40, 41, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 89, 92, 147, 164, 191, 201, 209, 210, 213, 214, 293, 355, 378, 402, 425, 439, 442, 443, 453, 456, 460, 471, 489, 515, 539], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"EpochPart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "NormalizedEpochReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "_NormalizationSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal": {"executed_lines": [109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 165, 166, 167, 168, 169, 174, 175, 176, 177, 178, 179, 180, 181, 182, 187, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 211, 233, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 302, 303, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 334, 335, 336, 337, 356, 357, 358, 359, 360, 361, 362, 363, 372, 373, 374, 375, 376, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 396, 397, 398, 399, 400, 403, 404, 416, 417, 418, 423, 426, 435, 436, 437, 447, 448, 449, 450, 451, 454, 457, 458, 461, 462, 463, 464, 465, 468], "summary": {"covered_lines": 203, "num_statements": 206, "percent_covered": 98.46153846153847, "percent_covered_display": "98", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 98.54368932038835, "percent_statements_covered_display": "99", "num_branches": 54, "num_partial_branches": 1, "covered_branches": 53, "missing_branches": 1, "percent_branches_covered": 98.14814814814815, "percent_branches_covered_display": "98"}, "missing_lines": [440, 466, 467], "excluded_lines": [], "start_line": 89, "executed_branches": [[109, 110], [109, 111], [111, 112], [111, 113], [151, 152], [151, 161], [154, 157], [154, 159], [161, -147], [161, 162], [166, -164], [166, 167], [182, 187], [182, 188], [188, 166], [188, 189], [193, 194], [193, 195], [204, 205], [204, 206], [241, 242], [241, 243], [245, 246], [245, 247], [247, 248], [247, 249], [266, 267], [266, 274], [268, 269], [268, 270], [278, 279], [278, 280], [281, 282], [281, 283], [297, 298], [297, 299], [323, 324], [323, 335], [356, 357], [356, 358], [358, 359], [358, 360], [360, 361], [379, 380], [379, 381], [435, 436], [435, 437], [447, 448], [447, 449], [457, -456], [457, 458], [462, -460], [462, 463]], "missing_branches": [[360, 363]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 26, 31, 32, 38, 39, 40, 41, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 84, 85, 86, 89, 92, 147, 164, 191, 201, 209, 210, 213, 214, 293, 355, 378, 402, 425, 439, 442, 443, 453, 456, 460, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 484, 485, 486, 489, 492, 493, 494, 495, 496, 497, 506, 507, 508, 509, 510, 511, 512, 515, 524, 532, 539, 553, 554, 555, 556, 557, 558, 559, 563, 564, 566, 567, 568, 570, 571, 579, 580, 581, 582], "summary": {"covered_lines": 128, "num_statements": 130, "percent_covered": 98.05194805194805, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.46153846153847, "percent_statements_covered_display": "98", "num_branches": 24, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 1, "percent_branches_covered": 95.83333333333333, "percent_branches_covered_display": "96"}, "missing_lines": [502, 503], "excluded_lines": [], "start_line": 1, "executed_branches": [[84, 85], [84, 86], [472, -471], [472, 473], [474, 475], [474, 476], [477, 472], [477, 478], [484, 485], [484, 486], [494, 495], [494, 511], [506, 507], [506, 509], [511, 512], [553, 554], [553, 555], [559, 563], [559, 564], [567, -566], [567, 568], [579, 580], [579, 581]], "missing_branches": [[511, -489]]}}}, "src\\quant_data_kit\\capture_v2\\models.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 74, 76, 80, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 123, 124, 127, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 217, 219, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 338, 339, 340, 341, 348, 356, 357, 358, 359, 367, 368, 372, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 415, 416, 417, 419, 420, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 489, 492, 494, 495, 506, 509, 510, 511, 512, 513, 515, 516, 520, 524, 525, 542, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 563, 564, 565, 567, 568, 569, 571, 577, 578, 579, 585, 588, 592, 593, 594, 596, 599, 603, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 346, "num_statements": 354, "percent_covered": 96.62162162162163, "percent_covered_display": "97", "missing_lines": 8, "excluded_lines": 5, "percent_statements_covered": 97.74011299435028, "percent_statements_covered_display": "98", "num_branches": 90, "num_partial_branches": 7, "covered_branches": 83, "missing_branches": 7, "percent_branches_covered": 92.22222222222223, "percent_branches_covered_display": "92"}, "missing_lines": [77, 128, 164, 166, 168, 189, 517, 625], "excluded_lines": [67, 68, 69, 70, 71], "executed_branches": [[90, 91], [90, 92], [104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119], [138, 139], [138, 140], [140, -137], [140, 141], [163, 165], [165, 167], [167, -156], [186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212], [235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248], [261, 262], [261, 295], [295, 301], [295, 315], [339, 340], [339, 341], [367, 368], [367, 372], [392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474], [516, -515], [578, 579], [578, 592], [621, 622], [624, 633], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": [[163, 164], [165, 166], [167, 168], [188, 189], [516, 517], [621, 634], [624, 625]], "functions": {"utc_text": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "canonical_json_bytes": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "Clock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67], "start_line": 67, "executed_branches": [], "missing_branches": []}, "Clock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69], "start_line": 69, "executed_branches": [], "missing_branches": []}, "SystemClock.now": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73, "executed_branches": [], "missing_branches": []}, "SystemClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.__init__": {"executed_lines": [84, 85], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.now": {"executed_lines": [88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy.__post_init__": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111]], "missing_branches": []}, "RetryPolicy.delay": {"executed_lines": [114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [[114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "random_jitter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "SegmentRotation.__post_init__": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy.__post_init__": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 156, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig.__post_init__": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [189], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202]], "missing_branches": [[188, 189]]}, "StreamConfig.capability": {"executed_lines": [206, 207, 208, 209, 210, 212, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [[207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": []}, "StreamConfig.mapping_source": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217, "executed_branches": [], "missing_branches": []}, "CaptureConfig.__post_init__": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "CaptureConfig.providers": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureConfig.capabilities": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "default_crypto_l2_streams": {"executed_lines": [260, 261, 262, 263, 278, 295, 301, 302, 303, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315]], "missing_branches": []}, "default_symbol_mappings": {"executed_lines": [323, 324], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318, "executed_branches": [], "missing_branches": []}, "SymbolMappingResolver.__init__": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "SymbolMappingResolver.resolve": {"executed_lines": [356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348, "executed_branches": [[367, 368], [367, 372]], "missing_branches": []}, "RawFrame.__post_init__": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409]], "missing_branches": []}, "RawFrame.raw_sha256": {"executed_lines": [417], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416, "executed_branches": [], "missing_branches": []}, "RawFrame.record": {"executed_lines": [420], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419, "executed_branches": [], "missing_branches": []}, "RawFrame.from_record": {"executed_lines": [441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent.__post_init__": {"executed_lines": [489, 492], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [], "missing_branches": []}, "AuditEvent.payload": {"executed_lines": [495, 506], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "AuditReference.__post_init__": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 515, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "CaptureStateMachine.__init__": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.events": {"executed_lines": [565], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.references": {"executed_lines": [569], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 568, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.transition": {"executed_lines": [577, 578, 579, 585, 588, 592, 593, 594], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [[578, 579], [578, 592]], "missing_branches": []}, "CaptureStateMachine.audit": {"executed_lines": [599], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine._record": {"executed_lines": [610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [625], "excluded_lines": [], "start_line": 603, "executed_branches": [[621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "assert_m7_scope": {"executed_lines": [639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 638, "executed_branches": [[642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655]], "missing_branches": []}, "_validate_public_url": {"executed_lines": [664, 665, 672], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [[665, -663], [665, 672]], "missing_branches": []}, "_canonical_url_identity": {"executed_lines": [678, 679], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_m7_stream_identity": {"executed_lines": [689], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 688, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 56, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 318, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 663, 675, 688], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "MarketKind": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CaptureState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": []}, "Clock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67, 69], "start_line": 66, "executed_branches": [], "missing_branches": []}, "SystemClock": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock": {"executed_lines": [84, 85, 88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "SegmentRotation": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 145, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 206, 207, 208, 209, 210, 212, 213, 214, 219], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [189], "excluded_lines": [], "start_line": 172, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": [[188, 189]]}, "CaptureConfig": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "SymbolMappingResolver": {"executed_lines": [338, 339, 340, 341, 356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [[339, 340], [339, 341], [367, 368], [367, 372]], "missing_branches": []}, "RawFrame": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 417, 420, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent": {"executed_lines": [489, 492, 495, 506], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 478, "executed_branches": [], "missing_branches": []}, "AuditReference": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 510, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "AuditPersistenceError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 520, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 565, 569, 577, 578, 579, 585, 588, 592, 593, 594, 599, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 92.5, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [625], "excluded_lines": [], "start_line": 524, "executed_branches": [[578, 579], [578, 592], [621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 195, "num_statements": 196, "percent_covered": 99.52380952380952, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 99.48979591836735, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 61, 62, 63, 64, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 204, 207, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 398, 399, 400, 401, 411, 412, 413, 415, 416, 422, 423, 424, 426, 427, 428, 429, 430, 432, 433, 434, 436, 437, 438, 440, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 467, 468, 469, 470, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 516, 517, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 544, 545, 546, 547, 549, 550, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 727, 728, 729, 737, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768, 771, 774, 783, 784, 785, 786, 787, 788, 789, 796, 797, 799, 800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 838, 841, 850, 851, 852, 853, 854, 855, 857, 858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929, 931, 932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029, 1038, 1039, 1040, 1041, 1042, 1043, 1046, 1047, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1067, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 612, "num_statements": 647, "percent_covered": 94.22336328626444, "percent_covered_display": "94", "missing_lines": 35, "excluded_lines": 6, "percent_statements_covered": 94.5904173106646, "percent_statements_covered_display": "95", "num_branches": 132, "num_partial_branches": 4, "covered_branches": 122, "missing_branches": 10, "percent_branches_covered": 92.42424242424242, "percent_branches_covered_display": "92"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 730, 731, 732, 734, 869, 870, 875, 876, 934, 978, 979], "excluded_lines": [68, 69, 70, 72, 73, 74], "executed_branches": [[62, 63], [62, 64], [94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467], [525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [728, 729], [740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768], [800, 801], [800, 802], [818, 819], [818, 820], [829, 830], [829, 831], [833, 834], [833, 835], [858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905], [933, 935], [996, 997], [996, 998], [1046, -1038], [1046, 1047], [1054, 1055], [1054, 1056], [1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [728, 730], [767, -737], [933, 934]], "functions": {"VolumeIdentity.__post_init__": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 68, "executed_branches": [], "missing_branches": []}, "CapacityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 72, "executed_branches": [], "missing_branches": []}, "default_capacity_probe": {"executed_lines": [76, 77], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity": {"executed_lines": [81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145]], "missing_branches": []}, "_linux_physical_devices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166]]}, "default_volume_identity": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [181, 182], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180]], "missing_branches": [[179, 181]]}, "StoragePreflight.alert": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.__init__": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [[229, 230], [229, 231]], "missing_branches": []}, "CaptureStorageGuard._tree_size": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._minimum_free": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.preflight": {"executed_lines": [262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335]], "missing_branches": []}, "CaptureStorageGuard.require_preflight": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "CaptureStorageGuard.require_hot_capacity": {"executed_lines": [344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366]], "missing_branches": []}, "CaptureStorageGuard.require_archive_capacity": {"executed_lines": [371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394]], "missing_branches": []}, "CaptureStorageGuard.probe_statistics": {"executed_lines": [400, 401], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.force_hot_probe": {"executed_lines": [412, 413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_due": {"executed_lines": [416], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_capacity": {"executed_lines": [423, 424], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_hot_size": {"executed_lines": [427, 428, 429, 430], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 426, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._ensure_hot_baseline": {"executed_lines": [433, 434], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [[433, -432], [433, 434]], "missing_branches": []}, "CaptureStorageGuard._ensure_archive_baseline": {"executed_lines": [437, 438], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [[437, -436], [437, 438]], "missing_branches": []}, "CaptureStorageGuard._refresh_hot": {"executed_lines": [441, 442, 443, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[451, 452], [451, 453]], "missing_branches": []}, "CaptureStorageGuard._refresh_archive": {"executed_lines": [460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459, "executed_branches": [[462, 463], [462, 467]], "missing_branches": []}, "RawSegmentWriter.__init__": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 491, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.pending_messages": {"executed_lines": [518], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.segment_count": {"executed_lines": [522], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.append": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542]], "missing_branches": []}, "RawSegmentWriter.drain_completed": {"executed_lines": [545, 546, 547], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.peek_completed": {"executed_lines": [550], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 549, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.acknowledge_completed": {"executed_lines": [553, 554, 555], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552, "executed_branches": [[553, 554], [553, 555]], "missing_branches": []}, "RawSegmentWriter.flush": {"executed_lines": [558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "_sha256_file": {"executed_lines": [668, 669, 670, 671, 672], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[670, 671], [670, 672]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [676, 677, 678, 679, 680, 681, 682], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [[676, 677], [676, 678]], "missing_branches": []}, "_validate_safe_path": {"executed_lines": [686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [708, 709, 713, 714], "excluded_lines": [], "start_line": 685, "executed_branches": [[688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706]], "missing_branches": []}, "_safe_mkdir": {"executed_lines": [719, 720, 721, 722, 723, 724], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "_fsync_directory": {"executed_lines": [728, 729], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [730, 731, 732, 734], "excluded_lines": [], "start_line": 727, "executed_branches": [[728, 729]], "missing_branches": [[728, 730]]}, "_atomic_immutable_write": {"executed_lines": [740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768]], "missing_branches": [[767, -737]]}, "DurableAuditStore.__init__": {"executed_lines": [783, 784, 785, 786, 787, 788, 789, 796, 797], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 774, "executed_branches": [], "missing_branches": []}, "DurableAuditStore.append": {"executed_lines": [800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 799, "executed_branches": [[800, 801], [800, 802], [818, 819], [818, 820]], "missing_branches": []}, "DurableAuditStore.load": {"executed_lines": [824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 823, "executed_branches": [[829, 830], [829, 831], [833, 834], [833, 835]], "missing_branches": []}, "LocalArchiveController.__init__": {"executed_lines": [850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 841, "executed_branches": [], "missing_branches": []}, "LocalArchiveController.preflight": {"executed_lines": [858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [869, 870, 875, 876], "excluded_lines": [], "start_line": 857, "executed_branches": [[858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905]], "missing_branches": []}, "LocalArchiveController.archive_segment": {"executed_lines": [932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029], "summary": {"covered_lines": 44, "num_statements": 47, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.61702127659575, "percent_statements_covered_display": "94", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [934, 978, 979], "excluded_lines": [], "start_line": 931, "executed_branches": [[933, 935], [996, 997], [996, 998]], "missing_branches": [[933, 934]]}, "LocalArchiveController._assert_identity": {"executed_lines": [1039, 1040, 1041, 1042, 1043, 1046, 1047], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1038, "executed_branches": [[1046, -1038], [1046, 1047]], "missing_branches": []}, "LocalArchiveController._remove_restore_temp": {"executed_lines": [1053, 1054, 1055, 1056], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1052, "executed_branches": [[1054, 1055], [1054, 1056]], "missing_branches": []}, "LocalArchiveController._hot_object_dir": {"executed_lines": [1059, 1067], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1058, "executed_branches": [], "missing_branches": []}, "iter_segment_frames": {"executed_lines": [1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1070, "executed_branches": [[1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 80, 154, 177, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 675, 685, 718, 727, 737, 771, 774, 799, 823, 838, 841, 857, 931, 1038, 1052, 1058, 1070], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CapturePausedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "DiskCapacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "VolumeIdentity": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 67, "executed_branches": [], "missing_branches": []}, "CapacityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.DiskExtent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.VolumeDiskExtents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "StoragePreflight": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 400, 401, 412, 413, 416, 423, 424, 427, 428, 429, 430, 433, 434, 437, 438, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 40, "num_partial_branches": 0, "covered_branches": 40, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [[229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467]], "missing_branches": []}, "RawSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 518, 522, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 545, 546, 547, 550, 553, 554, 555, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "ArchivePreflightReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 632, "executed_branches": [], "missing_branches": []}, "SegmentArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [], "missing_branches": []}, "DurableAuditStore": {"executed_lines": [783, 784, 785, 786, 787, 788, 789, 796, 797, 800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 771, "executed_branches": [[800, 801], [800, 802], [818, 819], [818, 820], [829, 830], [829, 831], [833, 834], [833, 835]], "missing_branches": []}, "LocalArchiveController": {"executed_lines": [850, 851, 852, 853, 854, 855, 858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929, 932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029, 1039, 1040, 1041, 1042, 1043, 1046, 1047, 1053, 1054, 1055, 1056, 1059, 1067], "summary": {"covered_lines": 95, "num_statements": 102, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 93.13725490196079, "percent_statements_covered_display": "93", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [869, 870, 875, 876, 934, 978, 979], "excluded_lines": [], "start_line": 838, "executed_branches": [[858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905], [933, 935], [996, 997], [996, 998], [1046, -1038], [1046, 1047], [1054, 1055], [1054, 1056]], "missing_branches": [[933, 934]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 727, 728, 729, 737, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768, 771, 774, 799, 823, 838, 841, 857, 931, 1038, 1052, 1058, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 268, "num_statements": 296, "percent_covered": 89.30635838150289, "percent_covered_display": "89", "missing_lines": 28, "excluded_lines": 4, "percent_statements_covered": 90.54054054054055, "percent_statements_covered_display": "91", "num_branches": 50, "num_partial_branches": 3, "covered_branches": 41, "missing_branches": 9, "percent_branches_covered": 82.0, "percent_branches_covered_display": "82"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 730, 731, 732, 734], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [728, 729], [740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768], [1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [728, 730], [767, -737]]}}}, "src\\quant_data_kit\\capture_v2\\synchronizers.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 180, 181, 184, 187, 188, 189, 190, 191, 192, 204, 205, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 330, 331, 332, 338, 339, 340, 341, 344, 347, 348, 349, 350, 351, 352, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 278, "num_statements": 302, "percent_covered": 93.87755102040816, "percent_covered_display": "94", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 92.05298013245033, "percent_statements_covered_display": "92", "num_branches": 90, "num_partial_branches": 0, "covered_branches": 90, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98, 250, 251, 323, 324, 422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101], [112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174], [188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341], [348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": [], "functions": {"_json_object": {"executed_lines": [48, 49, 52, 53, 54, 55, 56], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 47, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56]], "missing_branches": []}, "_received_milliseconds": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_provider_event_milliseconds": {"executed_lines": [65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [70, 71], "excluded_lines": [], "start_line": 64, "executed_branches": [[65, 66], [65, 72], [67, 65], [67, 68]], "missing_branches": []}, "_utc_event_datetime": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_price": {"executed_lines": [85, 86, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [87, 88], "excluded_lines": [], "start_line": 84, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "_quantity": {"executed_lines": [95, 96, 99, 100, 101], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [97, 98], "excluded_lines": [], "start_line": 94, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "_TrackedBook.__init__": {"executed_lines": [106, 107], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "_TrackedBook.snapshot": {"executed_lines": [110, 111, 112, 113, 114], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [[112, 113], [112, 114]], "missing_branches": []}, "_TrackedBook._snapshot_side": {"executed_lines": [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [[119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128]], "missing_branches": []}, "_TrackedBook.filter_delta": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[143, 144], [143, 145]], "missing_branches": []}, "_TrackedBook._filter_side": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "_TrackedBook.commit": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.__init__": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [[188, 189], [188, 190]], "missing_branches": []}, "BinanceBookSynchronizer.live": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_snapshot": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_update": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328], "summary": {"covered_lines": 42, "num_statements": 46, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 241, "executed_branches": [[242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301]], "missing_branches": []}, "BinanceBookSynchronizer._assert_mapping": {"executed_lines": [331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330, "executed_branches": [[340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer.__init__": {"executed_lines": [348, 349, 350, 351, 352, 363, 364], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347, "executed_branches": [[348, 349], [348, 350]], "missing_branches": []}, "OKXBookSynchronizer.live": {"executed_lines": [368], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "OKXBookSynchronizer.admit_message": {"executed_lines": [371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403]], "missing_branches": []}, "OKXBookSynchronizer._admit_item": {"executed_lines": [415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 47, "num_statements": 57, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 82.45614035087719, "percent_statements_covered_display": "82", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 409, "executed_branches": [[415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 59, 64, 75, 84, 94, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"ResyncRequired": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "Observation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "NormalizationOutcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "_TrackedBook": {"executed_lines": [106, 107, 110, 111, 112, 113, 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 138, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 181], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "BinanceBookSynchronizer": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 75, "num_statements": 79, "percent_covered": 96.11650485436893, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.9367088607595, "percent_statements_covered_display": "95", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 184, "executed_branches": [[188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer": {"executed_lines": [348, 349, 350, 351, 352, 363, 364, 368, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 79, "num_statements": 89, "percent_covered": 91.73553719008264, "percent_covered_display": "92", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.76404494382022, "percent_statements_covered_display": "89", "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 344, "executed_branches": [[348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 78, "num_statements": 88, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98], "excluded_lines": [], "start_line": 1, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\transport.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 41, 42, 43, 45, 46, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 75, 76, 77, 81, 82, 83, 84, 85, 86, 87, 91, 92, 95, 98, 99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 13, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36], "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65], [83, 84], [83, 85], [85, 86], [85, 87], [99, 100], [99, 101]], "missing_branches": [], "functions": {"HttpClient.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 22, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 26, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [28], "start_line": 28, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30], "start_line": 30, "executed_branches": [], "missing_branches": []}, "WebSocketConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 34, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient.get": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[41, 42], [41, 43]], "missing_branches": []}, "UrllibHttpClient._get": {"executed_lines": [47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [[61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection.__init__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.send": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.receive": {"executed_lines": [76, 77, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "_WebsocketsConnection.close": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "WebsocketsConnector.connect": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"HttpResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "HttpClient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 21, "executed_branches": [], "missing_branches": []}, "WebSocketConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26, 28, 30], "start_line": 25, "executed_branches": [], "missing_branches": []}, "WebSocketConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 33, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient": {"executed_lines": [41, 42, 43, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection": {"executed_lines": [70, 73, 76, 77, 81, 82, 83, 84, 85, 86, 87, 92], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "WebsocketsConnector": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\catalog.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 52, 56, 57, 58, 62, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 88, 89, 91], "summary": {"covered_lines": 58, "num_statements": 62, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]], "functions": {"DataCatalog.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32], [31, 36]], "missing_branches": []}, "DataCatalog.ensure_default_stack": {"executed_lines": [41, 42, 43, 44, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47]], "missing_branches": []}, "DataCatalog.list_stack_dependencies": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "DataCatalog.register_stack_dependency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "DataCatalog.save": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "DataCatalog.register": {"executed_lines": [65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[70, 71]], "missing_branches": [[70, 74]]}, "DataCatalog.list": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "DataCatalog.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [92, 93], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "DataCatalog": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 57, 58, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 89], "summary": {"covered_lines": 31, "num_statements": 35, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.57142857142857, "percent_statements_covered_display": "89", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "start_line": 25, "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]], "functions": {"main_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "main_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "main_catalog": {"executed_lines": [36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [55, 56, 57], "excluded_lines": [], "start_line": 35, "executed_branches": [[54, 59]], "missing_branches": [[54, 55]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 68], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [69], "excluded_lines": [], "start_line": 1, "executed_branches": [[68, -1]], "missing_branches": [[68, 69]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]]}}}, "src\\quant_data_kit\\curated.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 4, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 48, 49, 50], "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]], "functions": {"Curator.curate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_canonical": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_hash_bytes": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "_hash_file": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [[94, 95], [94, 96]], "missing_branches": []}, "_json_value": {"executed_lines": [100, 101, 102, 103, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [105], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108]], "missing_branches": [[104, 105]]}, "_dataset_segment": {"executed_lines": [112, 113, 114, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [[112, 113], [112, 114], [114, 127], [114, 128]], "missing_branches": []}, "_revision_segment": {"executed_lines": [132, 133, 134, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [], "missing_branches": []}, "_utc": {"executed_lines": [139, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[144, 145], [144, 146]], "missing_branches": []}, "_utc_text": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "_fixed_decimal": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [], "missing_branches": []}, "_fixed": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "build_session_bars": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244]], "missing_branches": []}, "_arrow_ready_bar": {"executed_lines": [248, 249, 250, 251, 252, 255, 256, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256]], "missing_branches": []}, "_snapshot_identity": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "_revision_record": {"executed_lines": [284, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [], "missing_branches": []}, "_validate_revision_record": {"executed_lines": [299, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295, "executed_branches": [[301, 302], [301, 303], [304, -295], [304, 305]], "missing_branches": []}, "_recover_missing_revision": {"executed_lines": [318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 85.18518518518519, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [320, 324], "excluded_lines": [], "start_line": 311, "executed_branches": [[319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337]], "missing_branches": [[319, 320], [323, 324]]}, "_publish_curated_snapshot": {"executed_lines": [357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [389], "excluded_lines": [], "start_line": 349, "executed_branches": [[364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399]], "missing_branches": [[388, 389]]}, "_write_curated_bars": {"executed_lines": [413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [[416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472]], "missing_branches": []}, "curate_trade_bars_from_snapshot": {"executed_lines": [524, 525, 526, 527, 528, 529, 536], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [[527, 528], [527, 529]], "missing_branches": []}, "_load_curated_snapshot": {"executed_lines": [554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652], "summary": {"covered_lines": 59, "num_statements": 61, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.72131147540983, "percent_statements_covered_display": "97", "num_branches": 36, "num_partial_branches": 2, "covered_branches": 34, "missing_branches": 2, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [620, 624], "excluded_lines": [], "start_line": 547, "executed_branches": [[556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[619, 620], [623, 624]]}, "load_curated_snapshot": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 87, 91, 99, 111, 131, 138, 149, 153, 157, 161, 247, 262, 283, 295, 311, 349, 402, 511, 547, 655], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Curator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 45, "executed_branches": [], "missing_branches": []}, "CuratedPartition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "CuratedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]]}}}, "src\\quant_data_kit\\data_lake.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 222, 223, 224, 226, 227, 229, 230, 232, 234, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017, 2020, 2023, 2024, 2026, 2027, 2028], "summary": {"covered_lines": 1066, "num_statements": 1115, "percent_covered": 94.28379287155346, "percent_covered_display": "94", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 95.60538116591928, "percent_statements_covered_display": "96", "num_branches": 372, "num_partial_branches": 32, "covered_branches": 336, "missing_branches": 36, "percent_branches_covered": 90.3225806451613, "percent_branches_covered_display": "90"}, "missing_lines": [259, 388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88], [237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266], [318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958], [1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": [[256, 259], [387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]], "functions": {"StoragePolicy.__post_init__": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "RawObjectManifest.reference": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__init__": {"executed_lines": [222, 223, 224], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__len__": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__iter__": {"executed_lines": [230, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__getitem__": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [259], "excluded_lines": [], "start_line": 234, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258]], "missing_branches": [[256, 259]]}, "EventClaimSequence.__eq__": {"executed_lines": [262, 263, 264, 265, 266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": []}, "EventClaimSequence.__repr__": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268, "executed_branches": [], "missing_branches": []}, "_canonical_json_bytes": {"executed_lines": [307], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306, "executed_branches": [], "missing_branches": []}, "_json_evidence": {"executed_lines": [318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332]], "missing_branches": []}, "_sha256_bytes": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "_sha256_file": {"executed_lines": [344, 345, 346, 347, 348], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[346, 347], [346, 348]], "missing_branches": []}, "_utc_datetime": {"executed_lines": [352, 357, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [[357, 358], [357, 359]], "missing_branches": []}, "_utc_text": {"executed_lines": [363], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "_segment": {"executed_lines": [367, 368, 369, 374, 375], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [[367, 368], [367, 369], [369, 374], [369, 375]], "missing_branches": []}, "_partition_segment": {"executed_lines": [379, 380, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381], [381, 382], [381, 383]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [387, 389, 390, 391, 392, 393], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [388], "excluded_lines": [], "start_line": 386, "executed_branches": [[387, 389]], "missing_branches": [[387, 388]]}, "_resolved_lake_root": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404]], "missing_branches": []}, "_validate_lake_path": {"executed_lines": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433], "summary": {"covered_lines": 21, "num_statements": 25, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.0, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [426, 427, 431, 432], "excluded_lines": [], "start_line": 407, "executed_branches": [[416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424]], "missing_branches": []}, "_mkdir_in_lake": {"executed_lines": [437, 442, 443, 444, 445, 446], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [], "missing_branches": []}, "_atomic_write_bytes": {"executed_lines": [451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [[455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472]], "missing_branches": []}, "_lake_lock": {"executed_lines": [477, 478, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476, "executed_branches": [], "missing_branches": []}, "_stable_staging_directory": {"executed_lines": [494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [[498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510]], "missing_branches": []}, "_tree_size": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513, "executed_branches": [[514, 515], [514, 516]], "missing_branches": []}, "_disk_probe_path": {"executed_lines": [520, 521, 522, 523], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[521, 522], [521, 523]], "missing_branches": []}, "evaluate_capacity": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526, "executed_branches": [[536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563]], "missing_branches": []}, "require_collection_capacity": {"executed_lines": [583, 591, 592, 593], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[591, 592], [591, 593]], "missing_branches": []}, "_raw_manifest_identity": {"executed_lines": [597], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "_raw_key_dir": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 614, "executed_branches": [], "missing_branches": []}, "_raw_object_dir": {"executed_lines": [630], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "_raw_tombstone_path": {"executed_lines": [642], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "_raw_deleting_dir": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "_raw_claim_path": {"executed_lines": [666], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "_raw_lock_identity": {"executed_lines": [676], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_raw_key_claim": {"executed_lines": [683, 691], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "_load_raw_key_claim": {"executed_lines": [698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [[705, 706], [705, 707], [708, 709], [708, 712]], "missing_branches": []}, "_ensure_raw_key_claim": {"executed_lines": [716, 717, 718, 719, 720, 725], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [[717, 718], [717, 719]], "missing_branches": []}, "_raw_stage_prefix": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 728, "executed_branches": [], "missing_branches": []}, "_validate_raw_manifest": {"executed_lines": [734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733, "executed_branches": [[734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760]], "missing_branches": []}, "_load_raw_from_dir": {"executed_lines": [770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792]], "missing_branches": []}, "_relocate_invalid_raw": {"executed_lines": [796, 797, 798, 799, 800, 801, 807, 808, 812], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795, "executed_branches": [], "missing_branches": []}, "_remove_staging_directory": {"executed_lines": [816, 817, 818, 819, 820], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [[818, 819], [818, 820]], "missing_branches": []}, "_recover_raw_staging": {"executed_lines": [828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [842, 849], "excluded_lines": [], "start_line": 823, "executed_branches": [[831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850]], "missing_branches": [[841, 842], [848, 849]]}, "write_raw_bytes": {"executed_lines": [869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [938, 946], "excluded_lines": [], "start_line": 858, "executed_branches": [[871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945]], "missing_branches": [[937, 938], [944, 946]]}, "_local_archive_path": {"executed_lines": [980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [989], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998]], "missing_branches": [[988, 989]]}, "_verify_archive_restore": {"executed_lines": [1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [], "missing_branches": []}, "_read_cleanup_audit": {"executed_lines": [1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [[1029, 1030], [1029, 1031]], "missing_branches": []}, "_load_archived_raw_reference": {"executed_lines": [1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1038, 1039, 1042, 1049, 1051], "excluded_lines": [], "start_line": 1034, "executed_branches": [[1041, 1043], [1050, 1052]], "missing_branches": [[1041, 1042], [1050, 1051]]}, "_validate_cleanup_receipt": {"executed_lines": [1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1055, "executed_branches": [[1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081]], "missing_branches": []}, "_finalize_raw_deleting": {"executed_lines": [1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1093, 1098, 1100, 1109, 1110, 1112], "excluded_lines": [], "start_line": 1084, "executed_branches": [[1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113]], "missing_branches": [[1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112]]}, "validate_raw_reference": {"executed_lines": [1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1132], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138]], "missing_branches": [[1131, 1132]]}, "load_raw_object": {"executed_lines": [1145, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [], "missing_branches": []}, "cleanup_archived_raw_object": {"executed_lines": [1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.53968253968254, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 86.04651162790698, "percent_statements_covered_display": "86", "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1175, 1176, 1179, 1181, 1190, 1203], "excluded_lines": [], "start_line": 1152, "executed_branches": [[1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217]], "missing_branches": [[1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218]]}, "_event_schema_id": {"executed_lines": [1239, 1240, 1241, 1242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "_stream_key": {"executed_lines": [1246, 1247, 1252, 1253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1245, "executed_branches": [], "missing_branches": []}, "_arrow_ready": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [1261], "excluded_lines": [], "start_line": 1256, "executed_branches": [[1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265]], "missing_branches": [[1260, 1261]]}, "_validated_table": {"executed_lines": [1270, 1271, 1274, 1275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1269, "executed_branches": [], "missing_branches": []}, "_normalized_snapshot_payload": {"executed_lines": [1287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1278, "executed_branches": [], "missing_branches": []}, "_validate_quarantine_batch": {"executed_lines": [1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1299, "executed_branches": [[1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318]], "missing_branches": []}, "_event_claim_reference": {"executed_lines": [1322, 1323, 1324, 1327, 1335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1321, "executed_branches": [], "missing_branches": []}, "_event_claim_path": {"executed_lines": [1345], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1344, "executed_branches": [], "missing_branches": []}, "_event_claim_payload": {"executed_lines": [1355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1354, "executed_branches": [], "missing_branches": []}, "_validate_event_claim_reference": {"executed_lines": [1366, 1374, 1378, 1379, 1380], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1377], "excluded_lines": [], "start_line": 1362, "executed_branches": [[1374, 1378], [1378, 1379], [1378, 1380]], "missing_branches": [[1374, 1377]]}, "_validate_event_claim": {"executed_lines": [1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1383, "executed_branches": [[1392, 1395], [1392, 1396]], "missing_branches": []}, "_recover_missing_event_claim": {"executed_lines": [1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427]], "missing_branches": []}, "_publish_event_claims": {"executed_lines": [1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1436, "executed_branches": [[1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460]], "missing_branches": []}, "_write_quarantine": {"executed_lines": [1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [1496, 1497, 1498], "excluded_lines": [], "start_line": 1463, "executed_branches": [[1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499]], "missing_branches": [[1495, 1496], [1496, 1495], [1496, 1497]]}, "_write_normalized_events_legacy": {"executed_lines": [1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761], "summary": {"covered_lines": 86, "num_statements": 98, "percent_covered": 84.55882352941177, "percent_covered_display": "85", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88", "num_branches": 38, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 9, "percent_branches_covered": 76.3157894736842, "percent_branches_covered_display": "76"}, "missing_lines": [1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751], "excluded_lines": [], "start_line": 1525, "executed_branches": [[1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757]], "missing_branches": [[1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751]]}, "write_normalized_events": {"executed_lines": [1780, 1782], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [], "missing_branches": []}, "write_normalized_batches": {"executed_lines": [1804, 1806], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [], "missing_branches": []}, "_safe_snapshot_partition": {"executed_lines": [1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1825], "excluded_lines": [], "start_line": 1817, "executed_branches": [[1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826]], "missing_branches": [[1824, 1825]]}, "_load_normalized_snapshot": {"executed_lines": [1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936], "summary": {"covered_lines": 62, "num_statements": 64, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 2, "covered_branches": 36, "missing_branches": 2, "percent_branches_covered": 94.73684210526316, "percent_branches_covered_display": "95"}, "missing_lines": [1888, 1912], "excluded_lines": [], "start_line": 1829, "executed_branches": [[1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936]], "missing_branches": [[1887, 1888], [1911, 1912]]}, "load_normalized_snapshot": {"executed_lines": [1940], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1939, "executed_branches": [], "missing_branches": []}, "read_normalized_events": {"executed_lines": [1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1943, "executed_branches": [[1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": []}, "DuckDBSnapshot.__init__": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1966, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988]], "missing_branches": []}, "DuckDBSnapshot.query": {"executed_lines": [1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1990, "executed_branches": [[1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBSnapshot.close": {"executed_lines": [2011], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2010, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__enter__": {"executed_lines": [2014], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2013, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__exit__": {"executed_lines": [2017], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2016, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.__init__": {"executed_lines": [2024], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2023, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.open_snapshot": {"executed_lines": [2027, 2028], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 316, 339, 343, 351, 362, 366, 378, 386, 396, 407, 436, 449, 475, 476, 485, 486, 513, 519, 526, 574, 596, 614, 629, 641, 653, 665, 675, 682, 697, 715, 728, 733, 763, 795, 815, 823, 858, 979, 1001, 1022, 1034, 1055, 1084, 1117, 1141, 1152, 1238, 1245, 1256, 1269, 1278, 1299, 1321, 1344, 1354, 1362, 1383, 1403, 1436, 1463, 1525, 1769, 1793, 1817, 1829, 1939, 1943, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CollectionStoppedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "StoragePolicy": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "CapacityDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "RawObjectManifest": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "RawObjectReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "RawKeyClaim": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "ArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "PartitionManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [], "missing_branches": []}, "EventClaimReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [], "missing_branches": []}, "EventClaimShardManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "EventClaimIndexManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "L2CheckpointManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "EventClaimSequence": {"executed_lines": [222, 223, 224, 227, 230, 232, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 262, 263, 264, 265, 266, 269], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.22641509433963, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [259], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": [[256, 259]]}, "NormalizedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "QuarantineEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [], "missing_branches": []}, "NormalizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2011, 2014, 2017], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1963, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBCatalog": {"executed_lines": [2024, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2020, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 992, "num_statements": 1040, "percent_covered": 93.95924308588064, "percent_covered_display": "94", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 95.38461538461539, "percent_statements_covered_display": "95", "num_branches": 334, "num_partial_branches": 31, "covered_branches": 299, "missing_branches": 35, "percent_branches_covered": 89.52095808383234, "percent_branches_covered_display": "90"}, "missing_lines": [388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "start_line": 1, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": [[387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]]}}}, "src\\quant_data_kit\\domain_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 38, "num_partial_branches": 0, "covered_branches": 38, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134], [161, 162], [161, 167], [173, 174], [173, 175], [195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": [], "functions": {"_required_text": {"executed_lines": [49, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 51]], "missing_branches": []}, "_optional_text": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "_validate_knowledge_interval": {"executed_lines": [62, 63, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [[68, 69], [68, 70]], "missing_branches": []}, "InstrumentSpec.__post_init__": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping.__post_init__": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession.__post_init__": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "dataclass_payload": {"executed_lines": [218, 219, 242, 243, 252, 253, 264], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [[218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}, "fixed_point_payload": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_time": {"executed_lines": [272], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_optional_time": {"executed_lines": [276], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 54, 58, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 267, 271, 275], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AssetClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "MarginMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "SessionPhase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "InstrumentSpec": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}}}, "src\\quant_data_kit\\exceptions.py": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"QuantDataKitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [], "missing_branches": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "ProviderError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\fixed_point.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 23, 25, 27, 29, 32, 33, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 56, 57], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]], "functions": {"FixedPoint.__post_init__": {"executed_lines": [23, 25, 27, 29], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [24, 26, 28, 30], "excluded_lines": [], "start_line": 22, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30]]}, "FixedPoint.from_decimal": {"executed_lines": [41, 42, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [43], "excluded_lines": [], "start_line": 33, "executed_branches": [[42, 44], [46, 47], [46, 48]], "missing_branches": [[42, 43]]}, "FixedPoint.to_decimal": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_positive": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_non_negative": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FixedPoint": {"executed_lines": [23, 25, 27, 29, 41, 42, 44, 45, 46, 47, 48, 51, 54, 57], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "start_line": 16, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\l2_replay.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 213, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 280, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 408, 409, 414, 415, 416, 420, 421, 422, 423, 424, 425, 426, 427, 428, 430, 431, 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, 454, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 283, "num_statements": 289, "percent_covered": 97.72151898734177, "percent_covered_display": "98", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 97.92387543252595, "percent_statements_covered_display": "98", "num_branches": 106, "num_partial_branches": 1, "covered_branches": 103, "missing_branches": 3, "percent_branches_covered": 97.16981132075472, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443], [478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": [[205, 208], [272, 273], [272, 275]], "functions": {"_canonical": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "_level": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.initialized": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.sequence": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply": {"executed_lines": [96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101]], "missing_branches": []}, "L2BookReconstructor.apply_snapshot": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_snapshot_state": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply_delta": {"executed_lines": [113, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_delta_state": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_without_checkpoint": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126], [126, 127], [126, 129]], "missing_branches": []}, "L2BookReconstructor._apply_validated_without_checkpoint": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[134, 135], [134, 137], [137, 138], [137, 140]], "missing_branches": []}, "L2BookReconstructor._apply_validated_snapshot_state": {"executed_lines": [143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [[144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160]], "missing_branches": []}, "L2BookReconstructor._apply_validated_delta_state": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [208], "excluded_lines": [], "start_line": 170, "executed_branches": [[171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206]], "missing_branches": [[205, 208]]}, "L2BookReconstructor._apply_validated_uniform_upsert_batch": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278], "summary": {"covered_lines": 22, "num_statements": 27, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 81.48148148148148, "percent_statements_covered_display": "81", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259]], "missing_branches": [[272, 273], [272, 275]]}, "L2BookReconstructor._apply_validated_atomic_delta_group": {"executed_lines": [304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 34, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390]], "missing_branches": []}, "L2BookReconstructor._assert_identity": {"executed_lines": [409, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408, "executed_branches": [[415, -408], [415, 416]], "missing_branches": []}, "L2BookReconstructor._assert_time_advances": {"executed_lines": [421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420, "executed_branches": [[421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428]], "missing_branches": []}, "L2BookReconstructor._assert_book_valid": {"executed_lines": [435, 436, 437, 438], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431, "executed_branches": [[435, 436], [435, 437], [437, -430], [437, 438]], "missing_branches": []}, "L2BookReconstructor.checkpoint": {"executed_lines": [441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443]], "missing_branches": []}, "_parsed_timestamp": {"executed_lines": [468], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [], "missing_branches": []}, "replay_l2": {"executed_lines": [477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 62, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 471], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"L2ReplayError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "ReconstructedLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "BookCheckpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "L2ReplayResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 89, 93, 96, 97, 98, 99, 100, 101, 104, 105, 108, 109, 110, 113, 114, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 409, 414, 415, 416, 421, 422, 423, 424, 425, 426, 427, 428, 435, 436, 437, 438, 441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 192, "num_statements": 198, "percent_covered": 96.89655172413794, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 92, "num_partial_branches": 1, "covered_branches": 89, "missing_branches": 3, "percent_branches_covered": 96.73913043478261, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 74, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443]], "missing_branches": [[205, 208], [272, 273], [272, 275]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}}}, "src\\quant_data_kit\\market_clock_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 16, 18, 19, 21, 22, 23, 26, 27, 29, 30, 31, 40, 41, 42, 44, 53], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]], "functions": {"MarketClock.__init__": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [17, 20], "excluded_lines": [], "start_line": 15, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21]]}, "MarketClock.session_at": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "MarketClock.trading_day_at": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "MarketClock.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "MarketClock.next_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": [[60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MarketClock": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27, 30, 31, 41, 42], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 51.515151515151516, "percent_covered_display": "52", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 14, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\market_events_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 97, 98, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 271, 272, 273, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 264, "num_statements": 265, "percent_covered": 99.45205479452055, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.62264150943396, "percent_statements_covered_display": "99", "num_branches": 100, "num_partial_branches": 1, "covered_branches": 99, "missing_branches": 1, "percent_branches_covered": 99.0, "percent_branches_covered_display": "99"}, "missing_lines": [160], "excluded_lines": [], "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84], [98, -95], [98, 103], [120, 121], [120, 122], [122, -114], [122, 123], [137, -133], [137, 138], [157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186], [198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214], [228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241], [253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298], [310, -307], [310, 311], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": [[159, 160]], "functions": {"_required_text": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[34, 35], [34, 36]], "missing_branches": []}, "_positive": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, -39], [40, 41]], "missing_branches": []}, "_non_negative": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, -44], [45, 46]], "missing_branches": []}, "_MarketEventBase.__post_init__": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel.__post_init__": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent.__post_init__": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent.__post_init__": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent.__post_init__": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 153, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent.__post_init__": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent.__post_init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent.__post_init__": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent.__post_init__": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent.__post_init__": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent.__post_init__": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "_time": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [], "missing_branches": []}, "_base_payload": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331, "executed_branches": [], "missing_branches": []}, "_level_payload": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346, "executed_branches": [], "missing_branches": []}, "market_event_payload": {"executed_lines": [355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354, "executed_branches": [[356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 39, 44, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 331, 346, 354], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AggressorSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "BookSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "BookAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [], "missing_branches": []}, "_MarketEventBase": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 142, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 147, "num_statements": 147, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}}}, "src\\quant_data_kit\\normalized_v3.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 236, 237, 238, 239, 240, 242, 243, 245, 246, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 327, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 385, 386, 387, 388, 389, 390, 391, 393, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 423, 424, 425, 426, 429, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 468, 469, 470, 471, 473, 474, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 622, 623, 624, 625, 627, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 643, 644, 645, 646, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1415, "num_statements": 1454, "percent_covered": 95.55444555444555, "percent_covered_display": "96", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 97.31774415405778, "percent_statements_covered_display": "97", "num_branches": 548, "num_partial_branches": 46, "covered_branches": 498, "missing_branches": 50, "percent_branches_covered": 90.87591240875912, "percent_branches_covered_display": "91"}, "missing_lines": [363, 419, 427, 709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [211, -208], [211, 212], [215, 216], [215, 217], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381], [401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377], [418, 419], [426, 427], [506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]], "functions": {"_native_validator": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "_validate_l2_semantics": {"executed_lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 30, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149]], "missing_branches": []}, "_validate_event_record": {"executed_lines": [153, 154, 155, 156, 157, 158, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [[157, 158], [157, 160]], "missing_branches": []}, "_cached_timestamp": {"executed_lines": [165], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "_cached_date": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "_cached_utc_text": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_cached_date_text": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_arrow_ready_rows": {"executed_lines": [184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196]], "missing_branches": []}, "_InputSpool.__init__": {"executed_lines": [203, 204, 205, 206], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "_InputSpool.append": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [[211, -208], [211, 212]], "missing_branches": []}, "_InputSpool.flush": {"executed_lines": [215, 216, 217, 218, 226, 227, 231, 232, 233, 234], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214, "executed_branches": [[215, 216], [215, 217]], "missing_branches": []}, "_InputSpool.close": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "_InputSpool.__enter__": {"executed_lines": [243], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "_InputSpool.__exit__": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [], "missing_branches": []}, "_iter_spooled_records": {"executed_lines": [250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249, "executed_branches": [[251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260]], "missing_branches": []}, "_has_non_finite": {"executed_lines": [264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [[264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270]], "missing_branches": []}, "_OpenPartition.append": {"executed_lines": [289, 294, 295, 296, 297], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288, "executed_branches": [[294, 295], [294, 296]], "missing_branches": []}, "_OpenPartition.flush": {"executed_lines": [300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301], [300, 302], [306, 307], [313, 314]], "missing_branches": [[306, 312], [313, 321]]}, "_OpenPartition.append_record_batch": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [[334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354]], "missing_branches": []}, "_OpenPartition._flush_arrow_buffer": {"executed_lines": [357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [363], "excluded_lines": [], "start_line": 356, "executed_branches": [[357, 358], [357, 359], [362, 364], [364, 365], [364, 372]], "missing_branches": [[362, 363]]}, "_OpenPartition.close": {"executed_lines": [378, 379, 380, 381, 382], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[380, 381]], "missing_branches": [[380, -377]]}, "_PartitionSet.__init__": {"executed_lines": [387, 388, 389, 390, 391], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386, "executed_branches": [], "missing_branches": []}, "_PartitionSet.append": {"executed_lines": [394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [419], "excluded_lines": [], "start_line": 393, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421]], "missing_branches": [[418, 419]]}, "_PartitionSet.flush_all": {"executed_lines": [424, 425, 426], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [427], "excluded_lines": [], "start_line": 423, "executed_branches": [[424, 425], [424, 426], [426, -423]], "missing_branches": [[426, 427]]}, "_PartitionSet.append_record_batch": {"executed_lines": [440, 445, 446, 447, 448, 452, 459, 460, 461, 462], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429, "executed_branches": [[447, 448], [447, 460], [460, 461], [460, 462]], "missing_branches": []}, "_PartitionSet.close": {"executed_lines": [469, 470, 471], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [[470, -468], [470, 471]], "missing_branches": []}, "_PartitionSet.paths": {"executed_lines": [474], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473, "executed_branches": [], "missing_branches": []}, "_partition_identity": {"executed_lines": [487], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "_streaming_stage": {"executed_lines": [497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [], "excluded_lines": [], "start_line": 496, "executed_branches": [[499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521]], "missing_branches": [[506, 499], [518, 520], [520, -495]]}, "_sql_text": {"executed_lines": [525], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [], "missing_branches": []}, "_sql_path_list": {"executed_lines": [529], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "_sql_identifier": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "_canonical_sql_value": {"executed_lines": [537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536, "executed_branches": [[537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563]], "missing_branches": []}, "_canonical_row_sql": {"executed_lines": [567, 568, 569, 575], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[568, 569], [568, 575]], "missing_branches": []}, "_canonical_event_sql": {"executed_lines": [579], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578, "executed_branches": [], "missing_branches": []}, "_sort_partition": {"executed_lines": [589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 588, "executed_branches": [[589, 590], [589, 591], [609, 610], [609, 614], [614, 615]], "missing_branches": [[614, 616]]}, "_JsonArrayDigest.__init__": {"executed_lines": [622, 623, 624, 625], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "_JsonArrayDigest.update": {"executed_lines": [628, 629, 630, 635, 636, 637, 638, 639, 640, 641], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 627, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_JsonArrayDigest.hexdigest": {"executed_lines": [644, 645, 646], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 643, "executed_branches": [], "missing_branches": []}, "_logical_rows": {"executed_lines": [650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 649, "executed_branches": [[653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662]], "missing_branches": [[657, 655], [661, 659]]}, "_contains_floating_type": {"executed_lines": [668, 669, 670, 671, 672, 673, 674], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674]], "missing_branches": []}, "_scan_partition": {"executed_lines": [681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "95", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [709, 717], "excluded_lines": [], "start_line": 677, "executed_branches": [[684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727]], "missing_branches": [[708, 709], [716, 717]]}, "_scan_partition_arrow_ipc": {"executed_lines": [733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 732, "executed_branches": [[742, 743], [742, 747], [747, 748], [747, 753]], "missing_branches": []}, "_partition_manifests": {"executed_lines": [765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [782, 790], "excluded_lines": [], "start_line": 758, "executed_branches": [[766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791]], "missing_branches": [[781, 782], [789, 790]]}, "_duplicate_event_ids": {"executed_lines": [810, 811, 812, 813, 814, 820, 822], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 809, "executed_branches": [[810, 811], [810, 812]], "missing_branches": []}, "_publish_quarantine_file": {"executed_lines": [834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [852, 873], "excluded_lines": [], "start_line": 825, "executed_branches": [[834, 835], [834, 836], [851, 853]], "missing_branches": [[851, 852]]}, "_rebuild_after_exclusions": {"executed_lines": [886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905]], "missing_branches": [[886, 888], [904, 906]]}, "_claim_database": {"executed_lines": [927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997], "summary": {"covered_lines": 25, "num_statements": 29, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.20689655172414, "percent_statements_covered_display": "86", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [991, 992, 993, 994], "excluded_lines": [], "start_line": 922, "executed_branches": [[940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997]], "missing_branches": [[990, 991], [992, 993], [992, 994]]}, "_claim_shard_manifests": {"executed_lines": [1003, 1004], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1000, "executed_branches": [], "missing_branches": []}, "_claim_multiset_manifest_sql": {"executed_lines": [1015, 1018, 1022, 1023, 1031], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1031]], "missing_branches": []}, "_export_claim_index": {"executed_lines": [1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1053, 1066], "excluded_lines": [], "start_line": 1044, "executed_branches": [[1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067]], "missing_branches": [[1052, 1053], [1065, 1066]]}, "_claim_select_sql": {"executed_lines": [1092, 1093, 1094], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_claim_file_order": {"executed_lines": [1114, 1115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1113, "executed_branches": [], "missing_branches": []}, "_claim_shard_manifests_from_paths": {"executed_lines": [1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1128], "excluded_lines": [], "start_line": 1118, "executed_branches": [[1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130]], "missing_branches": [[1127, 1128]]}, "_write_claim_index_manifest": {"executed_lines": [1158, 1165, 1176, 1177], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1151, "executed_branches": [], "missing_branches": []}, "_build_claim_index_files": {"executed_lines": [1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1197, 1218, 1242], "excluded_lines": [], "start_line": 1183, "executed_branches": [[1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256]], "missing_branches": [[1196, 1197], [1217, 1218], [1241, 1242]]}, "_claim_index_root": {"executed_lines": [1260], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1259, "executed_branches": [], "missing_branches": []}, "_claim_index_files": {"executed_lines": [1264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "_validate_claim_index": {"executed_lines": [1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 94.52054794520548, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [1275, 1327], "excluded_lines": [], "start_line": 1267, "executed_branches": [[1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332]], "missing_branches": [[1274, 1275], [1326, 1327]]}, "_publish_or_validate_claim_index": {"executed_lines": [1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1335, "executed_branches": [[1345, 1346], [1345, 1367]], "missing_branches": []}, "_snapshot_payload_v3": {"executed_lines": [1389], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1378, "executed_branches": [], "missing_branches": []}, "_index_for_snapshot": {"executed_lines": [1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1431], "excluded_lines": [], "start_line": 1404, "executed_branches": [[1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462]], "missing_branches": [[1430, 1431]]}, "iter_event_claims_v3": {"executed_lines": [1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1466, "executed_branches": [[1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498]], "missing_branches": []}, "_historical_index_paths": {"executed_lines": [1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1512, 1560], "excluded_lines": [], "start_line": 1503, "executed_branches": [[1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562]], "missing_branches": [[1511, 1512], [1559, 1560], [1561, 1563]]}, "_assert_lake_wide_claims": {"executed_lines": [1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1575, "executed_branches": [[1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599]], "missing_branches": []}, "load_normalized_snapshot_v3": {"executed_lines": [1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755], "summary": {"covered_lines": 76, "num_statements": 78, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97", "num_branches": 42, "num_partial_branches": 2, "covered_branches": 40, "missing_branches": 2, "percent_branches_covered": 95.23809523809524, "percent_branches_covered_display": "95"}, "missing_lines": [1622, 1706], "excluded_lines": [], "start_line": 1602, "executed_branches": [[1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746]], "missing_branches": [[1621, 1622], [1705, 1706]]}, "_all_duplicate_ids_from_spool": {"executed_lines": [1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1779, "executed_branches": [[1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789]], "missing_branches": []}, "_validate_stream_record": {"executed_lines": [1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [[1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837]], "missing_branches": []}, "_revalidate_streams_after_duplicate_exclusions": {"executed_lines": [1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1841, "executed_branches": [[1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882]], "missing_branches": []}, "_all_true": {"executed_lines": [1899, 1900], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1898, "executed_branches": [], "missing_branches": []}, "_require_all": {"executed_lines": [1904, 1905], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1903, "executed_branches": [[1904, -1903], [1904, 1905]], "missing_branches": []}, "_uniform_value": {"executed_lines": [1909, 1910, 1911, 1912, 1913, 1914], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1908, "executed_branches": [[1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914]], "missing_branches": []}, "_validate_fixed_point_array": {"executed_lines": [1918, 1919, 1920, 1921, 1922, 1925], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1917, "executed_branches": [[1920, 1921], [1920, 1922]], "missing_branches": []}, "_validate_common_arrow_batch": {"executed_lines": [1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [1938, 1939, 1998], "excluded_lines": [], "start_line": 1931, "executed_branches": [[1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999]], "missing_branches": [[1997, 1998]]}, "_logical_batch_rows": {"executed_lines": [2009], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2008, "executed_branches": [], "missing_branches": []}, "_sort_keys": {"executed_lines": [2013, 2021, 2022, 2023], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2012, "executed_branches": [[2021, 2022], [2021, 2023]], "missing_branches": []}, "_validate_l2_delta_columns": {"executed_lines": [2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "_encoded_l2_group_ranges": {"executed_lines": [2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2067, "executed_branches": [[2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088]], "missing_branches": []}, "_try_apply_atomic_l2_delta_batch": {"executed_lines": [2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 94.20289855072464, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [2137, 2178], "excluded_lines": [], "start_line": 2096, "executed_branches": [[2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174]], "missing_branches": [[2136, 2137], [2173, 2178]]}, "_try_apply_uniform_l2_delta_batch": {"executed_lines": [2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [2241, 2264], "excluded_lines": [], "start_line": 2195, "executed_branches": [[2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268]], "missing_branches": [[2240, 2241], [2263, 2264]]}, "_validate_record_batch": {"executed_lines": [2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2282, "executed_branches": [[2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326]], "missing_branches": []}, "_iter_record_batches": {"executed_lines": [2332, 2333, 2334, 2335, 2336, 2337], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2329, "executed_branches": [[2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337]], "missing_branches": []}, "_l2_group_key": {"executed_lines": [2341, 2342, 2343], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2340, "executed_branches": [], "missing_branches": []}, "_concat_record_batches": {"executed_lines": [2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2351, "executed_branches": [[2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359]], "missing_branches": []}, "_iter_atomic_l2_record_batches": {"executed_lines": [2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 98.03921568627452, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 2368, "executed_branches": [[2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415]], "missing_branches": [[2408, 2410]]}, "_finalize_strict_batch_snapshot": {"executed_lines": [2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 97.77777777777777, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 2418, "executed_branches": [[2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528]], "missing_branches": [[2527, 2529]]}, "write_normalized_batches_v3": {"executed_lines": [2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647], "summary": {"covered_lines": 48, "num_statements": 49, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.95918367346938, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [2646], "excluded_lines": [], "start_line": 2543, "executed_branches": [[2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647]], "missing_branches": [[2645, 2646]]}, "write_normalized_events_v3": {"executed_lines": [2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 110, "num_statements": 115, "percent_covered": 93.08176100628931, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96", "num_branches": 44, "num_partial_branches": 4, "covered_branches": 38, "missing_branches": 6, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}, "missing_lines": [2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 2662, "executed_branches": [[2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 107, 152, 163, 164, 168, 169, 173, 174, 178, 179, 183, 201, 202, 208, 214, 236, 242, 245, 249, 263, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 495, 496, 524, 528, 532, 536, 566, 578, 588, 620, 621, 627, 643, 649, 667, 677, 732, 758, 809, 825, 876, 922, 1000, 1014, 1044, 1091, 1113, 1118, 1151, 1183, 1259, 1263, 1267, 1335, 1378, 1404, 1466, 1503, 1575, 1602, 1779, 1793, 1841, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1903, 1908, 1917, 1931, 2008, 2012, 2026, 2067, 2096, 2195, 2282, 2329, 2340, 2351, 2368, 2418, 2543, 2662], "summary": {"covered_lines": 158, "num_statements": 158, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"_ClaimIndexMissingError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "_InputSpool": {"executed_lines": [203, 204, 205, 206, 209, 210, 211, 212, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 237, 238, 239, 240, 243, 246], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[211, -208], [211, 212], [215, 216], [215, 217]], "missing_branches": []}, "_OpenPartition": {"executed_lines": [289, 294, 295, 296, 297, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 378, 379, 380, 381, 382], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 94.25287356321839, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [363], "excluded_lines": [], "start_line": 274, "executed_branches": [[294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377]]}, "_PartitionSet": {"executed_lines": [387, 388, 389, 390, 391, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 424, 425, 426, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 469, 470, 471, 474], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [419, 427], "excluded_lines": [], "start_line": 385, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471]], "missing_branches": [[418, 419], [426, 427]]}, "_JsonArrayDigest": {"executed_lines": [622, 623, 624, 625, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 644, 645, 646], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_ArrowBatchIdentity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1890, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 208, 214, 236, 242, 245, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 627, 643, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1280, "num_statements": 1316, "percent_covered": 95.57522123893806, "percent_covered_display": "96", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 97.26443768996961, "percent_statements_covered_display": "97", "num_branches": 492, "num_partial_branches": 40, "covered_branches": 448, "missing_branches": 44, "percent_branches_covered": 91.0569105691057, "percent_branches_covered_display": "91"}, "missing_lines": [709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 1, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}}}, "src\\quant_data_kit\\panel.py": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]], "functions": {"merge_earnings_to_panel": {"executed_lines": [10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [11, 12, 13, 27, 28], "excluded_lines": [], "start_line": 8, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30]], "missing_branches": [[10, 11], [26, 27]]}, "merge_northbound_to_panel": {"executed_lines": [44, 49, 54], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45, 46, 47], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 49]], "missing_branches": [[44, 45]]}, "add_industry_relative_strength": {"executed_lines": [64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [65, 66, 67], "excluded_lines": [], "start_line": 57, "executed_branches": [[64, 69]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 8, 43, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]]}}}, "src\\quant_data_kit\\process_lock.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": [], "functions": {"_acquire_windows_lock": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [[29, 30], [29, 31]], "missing_branches": []}, "_release_windows_lock": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "_acquire_posix_lock": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "_release_posix_lock": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "_windows_file_lock": {"executed_lines": [73, 75, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_posix_file_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_platform_lock_backend": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "process_file_lock": {"executed_lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 34, 43, 62, 71, 72, 93, 94, 114, 120, 126, 127], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\_fetch.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]], "functions": {"fetch_with_retries": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26], "excluded_lines": [], "start_line": 12, "executed_branches": [[20, 21]], "missing_branches": [[20, 26]]}, "fetch_symbols_parallel": {"executed_lines": [37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 55.0, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 29, "executed_branches": [[38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[38, 42], [44, 45], [44, 47], [47, 48]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]]}}}, "src\\quant_data_kit\\providers\\_network.py": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "executed_branches": [], "missing_branches": [[11, -6], [11, 12]], "functions": {"configure_network": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}, "": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}}}, "src\\quant_data_kit\\providers\\_symbols.py": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": [[12, 13], [12, 14]], "functions": {"normalize_symbol": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "to_market_symbol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}, "": {"executed_lines": [3, 6, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}}}, "src\\quant_data_kit\\providers\\akshare.py": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\benchmark.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [[26, 27], [26, 29]], "functions": {"fetch_hs300_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}}}, "src\\quant_data_kit\\providers\\earnings_forecast.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]], "functions": {"_score_forecast_type": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44], [44, 45]], "missing_branches": [[43, 46], [44, 43]]}, "_quarter_end_dates": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[53, 54], [53, 58], [54, 53], [54, 55], [56, 57]], "missing_branches": [[56, 54]]}, "fetch_earnings_forecasts": {"executed_lines": [68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 20, "num_statements": 33, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 60.60606060606061, "percent_statements_covered_display": "61", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 6, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 61, "executed_branches": [[69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 49, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}}}, "src\\quant_data_kit\\providers\\fundamentals.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]], "functions": {"_fetch_one_fundamental": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}, "fetch_fundamentals": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76, 77, 79, 87], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "fetch_fundamentals._task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}}}, "src\\quant_data_kit\\providers\\industry.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]], "functions": {"fetch_industry_returns": {"executed_lines": [27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 14, "num_statements": 27, "percent_covered": 51.42857142857143, "percent_covered_display": "51", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 51.851851851851855, "percent_statements_covered_display": "52", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}}}, "src\\quant_data_kit\\providers\\northbound.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]], "functions": {"_fetch_one_northbound": {"executed_lines": [25, 26, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 8, "num_statements": 24, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60], "excluded_lines": [], "start_line": 20, "executed_branches": [[25, 26]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53]]}, "fetch_northbound_holdings": {"executed_lines": [77, 79, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 71, "executed_branches": [[86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[86, 90], [92, 93], [92, 95], [96, 97]]}, "fetch_northbound_holdings._task": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [82, 83, 84], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 71], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]]}}}, "src\\quant_data_kit\\providers\\prices.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]], "functions": {"_fetch_one_price": {"executed_lines": [37, 38, 76, 77, 78, 79], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 30, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}, "fetch_daily_prices": {"executed_lines": [91, 92, 94, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "fetch_daily_prices._task": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 82], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}}}, "src\\quant_data_kit\\providers\\universe.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]], "functions": {"fetch_hs300_constituents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": [[21, 22], [21, 24]]}, "fetch_hs300_constituents_history": {"executed_lines": [41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 20, "num_statements": 75, "percent_covered": 24.031007751937985, "percent_covered_display": "24", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 26.666666666666668, "percent_statements_covered_display": "27", "num_branches": 54, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 43, "percent_branches_covered": 20.37037037037037, "percent_branches_covered_display": "20"}, "missing_lines": [44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 33, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}}}, "src\\quant_data_kit\\schemas_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]], "functions": {"_field": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_object_schema": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_event_schema": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "_timestamp": {"executed_lines": [394, 395, 397], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [396], "excluded_lines": [], "start_line": 393, "executed_branches": [[395, 397]], "missing_branches": [[395, 396]]}, "_fixed_value": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400, "executed_branches": [], "missing_branches": []}, "_require_positive": {"executed_lines": [406, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405, "executed_branches": [[407, 408], [407, 409]], "missing_branches": []}, "_require_non_negative": {"executed_lines": [413, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412, "executed_branches": [[414, 415], [414, 416]], "missing_branches": []}, "_validate_event_semantics": {"executed_lines": [420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500], "summary": {"covered_lines": 78, "num_statements": 80, "percent_covered": 96.57534246575342, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.5, "percent_statements_covered_display": "98", "num_branches": 66, "num_partial_branches": 3, "covered_branches": 63, "missing_branches": 3, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [426, 468], "excluded_lines": [], "start_line": 419, "executed_branches": [[423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500]], "missing_branches": [[425, 426], [467, 468], [499, -419]]}, "_validate_record_semantics": {"executed_lines": [504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525]], "missing_branches": [[524, -503]]}, "_validate_knowledge_interval": {"executed_lines": [529, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [[529, -528], [529, 532]], "missing_branches": []}, "get_arrow_schema": {"executed_lines": [536, 537, 538, 539, 540, 541], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 538]], "missing_branches": []}, "get_json_schema": {"executed_lines": [545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546], [545, 547]], "missing_branches": []}, "_compiled_json_validator": {"executed_lines": [558, 559, 560, 561, 564], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 554, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "validate_json_record": {"executed_lines": [572, 573, 574, 575, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "validate_event_stream": {"executed_lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [[587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623]], "missing_branches": []}, "validate_arrow_table": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[632, -626], [632, 633]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 52, 64, 69, 187, 196, 206, 207, 208, 211, 221, 234, 290, 297, 380, 393, 400, 405, 412, 419, 503, 528, 535, 544, 553, 554, 567, 580, 626], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "start_line": 1, "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]]}}}, "src\\quant_data_kit\\snapshots.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]], "functions": {"_canonical_frame_bytes": {"executed_lines": [37, 38, 39, 40, 43], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[39, 40]], "missing_branches": [[39, 43]]}, "frame_sha256": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "schema_sha256": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "create_snapshot": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [71, 96, 99], "excluded_lines": [], "start_line": 56, "executed_branches": [[70, 72], [94, 95], [94, 101], [95, 97], [98, 100]], "missing_branches": [[70, 71], [95, 96], [98, 99]]}, "load_snapshot": {"executed_lines": [110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [114], "excluded_lines": [], "start_line": 109, "executed_branches": [[113, 115], [116, 117], [116, 118]], "missing_branches": [[113, 114]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 46, 50, 56, 109], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]]}}}, "src\\quant_data_kit\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]], "functions": {"save_parquet": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "load_parquet": {"executed_lines": [38, 39, 41], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [40], "excluded_lines": [], "start_line": 37, "executed_branches": [[39, 41]], "missing_branches": [[39, 40]]}, "_date_bounds": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, 47]], "missing_branches": [[45, 46]]}, "build_manifest": {"executed_lines": [62, 63, 64, 67, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "write_manifest": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "save_manifest": {"executed_lines": [107, 108, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "load_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [124, 125, 126], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "parse_date": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "cache_covers_range": {"executed_lines": [140, 142, 143, 144, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [141], "excluded_lines": [], "start_line": 133, "executed_branches": [[140, 142]], "missing_branches": [[140, 141]]}, "should_refresh_cache": {"executed_lines": [155, 156, 158, 159], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 158]], "missing_branches": [[156, 157]]}, "incremental_start_date": {"executed_lines": [163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [168], "excluded_lines": [], "start_line": 162, "executed_branches": [[164, 165], [164, 166], [167, 169]], "missing_branches": [[167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44, 51, 87, 95, 123, 129, 133, 148, 162], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DataManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]]}}}, "src\\quant_data_kit\\temporal.py": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]], "functions": {"_normalize_times": {"executed_lines": [28, 29, 30, 32, 33, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [31, 34], "excluded_lines": [], "start_line": 27, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29]], "missing_branches": [[30, 31], [33, 34]]}, "point_in_time_join": {"executed_lines": [55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 69.38775510204081, "percent_covered_display": "69", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [56, 60, 72, 86, 87, 88, 89, 104], "excluded_lines": [], "start_line": 38, "executed_branches": [[55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105]], "missing_branches": [[55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104]]}, "audit_point_in_time": {"executed_lines": [115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [117, 127, 128, 129], "excluded_lines": [], "start_line": 108, "executed_branches": [[116, 118], [121, 122], [121, 123], [126, 130]], "missing_branches": [[116, 117], [126, 127]]}, "apply_symbol_lifecycle": {"executed_lines": [149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [150, 154], "excluded_lines": [], "start_line": 139, "executed_branches": [[149, 151], [153, 155]], "missing_branches": [[149, 150], [153, 154]]}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 38, 108, 139], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]]}}}, "src\\quant_data_kit\\temporal_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]], "functions": {"ensure_utc_datetime": {"executed_lines": [18, 19, 21, 22, 23, 24, 27, 28, 29], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [20, 25, 26], "excluded_lines": [], "start_line": 16, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29]]}, "_utc_series": {"executed_lines": [33, 35, 36, 37, 38, 39, 40, 42, 43], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [34, 41], "excluded_lines": [], "start_line": 32, "executed_branches": [[33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39]], "missing_branches": [[33, 34], [38, 41]]}, "validate_bitemporal_frame": {"executed_lines": [62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105], "summary": {"covered_lines": 21, "num_statements": 33, "percent_covered": 61.224489795918366, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104], "excluded_lines": [], "start_line": 52, "executed_branches": [[63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105]], "missing_branches": [[63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104]]}, "point_in_time_join_bitemporal": {"executed_lines": [122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 38, "num_statements": 42, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [123, 127, 155, 168], "excluded_lines": [], "start_line": 108, "executed_branches": [[122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[122, 123], [126, 127], [154, 155], [167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 32, 46, 47, 48, 49, 52, 108], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BitemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]]}}}, "src\\quant_data_kit\\validate.py": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]], "functions": {"validate_price_frame": {"executed_lines": [21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57], "summary": {"covered_lines": 18, "num_statements": 25, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72", "num_branches": 18, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55], "excluded_lines": [], "start_line": 14, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55]]}, "validate_calendar_coverage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}, "": {"executed_lines": [3, 5, 7, 9, 11, 14, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 1, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}}}, "tests\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_adapters_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": [], "functions": {"load_messages": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "binance_adapter": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "okx_adapter": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cn_adapter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "test_crypto_fixture_adapters_cover_required_events_and_replay_l2": {"executed_lines": [111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "test_binance_and_okx_map_to_same_stable_instrument_ids": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_crypto_fixtures_enter_normalized_layer_without_quarantine": {"executed_lines": [155, 159, 160, 169, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154, "executed_branches": [[155, -154], [155, 159]], "missing_branches": []}, "test_domestic_neutral_fixture_is_explicitly_not_market_data_certified": {"executed_lines": [183, 184, 185, 186, 190, 191, 192, 193], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "test_domestic_neutral_adapter_rejects_market_certification_claim": {"executed_lines": [200, 201, 202, 203], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_provider_sequence_gap_is_rejected_before_v2_emission": {"executed_lines": [207, 208, 209, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_binance_update_range_and_okx_trade_side_are_strict": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_failure": {"executed_lines": [225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224, "executed_branches": [], "missing_branches": []}, "test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract": {"executed_lines": [264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot": {"executed_lines": [292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_fixture_index_hashes_are_exact": {"executed_lines": [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[331, -322], [331, 332]], "missing_branches": []}, "test_adapter_context_time_and_sequence_primitives_fail_closed": {"executed_lines": [337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [], "missing_branches": []}, "test_adapter_constructors_and_unknown_message_kinds_are_strict": {"executed_lines": [404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 45, 60, 75, 88, 105, 141, 154, 182, 199, 206, 213, 224, 241, 263, 291, 322, 336, 403], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": []}}}, "tests\\test_benchmark_capture_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 87, 88, 89, 95, 96, 97, 98, 100, 101, 102, 103, 104, 106, 113, 114, 117, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 150, 151, 153, 154, 155, 156, 162, 163, 166, 167, 168, 169, 170, 172, 173, 174, 175, 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[174, 175], [174, 177]], "missing_branches": [], "functions": {"test_dense_burst_fixture_has_frozen_depth_and_expected_row_density": {"executed_lines": [28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_sparse_fixture_is_retained_and_fixture_guards_fail_closed": {"executed_lines": [61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts": {"executed_lines": [81, 82, 83, 85, 87, 95, 96, 97, 98, 100, 101, 102, 103, 104, 106, 113, 114], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts.accepted": {"executed_lines": [88, 89], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches": {"executed_lines": [120, 121, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 150, 151, 153, 154, 155, 156, 162, 163], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor.submit": {"executed_lines": [122, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures": {"executed_lines": [167, 168, 172, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 196, 197, 198, 199, 200], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.__init__": {"executed_lines": [169, 170], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.submit": {"executed_lines": [173, 174, 175, 177, 178], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172, "executed_branches": [[174, 175], [174, 177]], "missing_branches": []}, "test_benchmark_timing_excludes_only_post_report_worker_teardown": {"executed_lines": [204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 60, 78, 117, 166, 203], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor": {"executed_lines": [122, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate": {"executed_lines": [169, 170, 173, 174, 175, 177, 178], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [[174, 175], [174, 177]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 87, 88, 89, 95, 96, 97, 98, 100, 101, 102, 103, 104, 106, 113, 114, 117, 120, 121, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 150, 151, 153, 154, 155, 156, 162, 163, 166, 167, 168, 172, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 133, "num_statements": 133, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_benchmark_normalized_l2.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[14, -10], [14, 15]], "missing_branches": [], "functions": {"test_synthetic_l2_fixture_is_sequential_and_schema_valid": {"executed_lines": [11, 12, 13, 14, 15, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}, "test_small_benchmark_proves_end_to_end_determinism": {"executed_lines": [24, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}}}, "tests\\test_capture_v2_collector_cli_transport.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 114, 115, 116, 119, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 523, 525, 526, 527, 529, 530, 531, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 640, 642, 643, 645, 646, 648, 649, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 671, 673, 674, 675, 678, 681, 682, 683, 684, 685, 687, 688, 690, 691, 692, 694, 695, 697, 699, 700, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 361, "num_statements": 364, "percent_covered": 98.67724867724868, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.17582417582418, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [86, 693, 696], "excluded_lines": [], "executed_branches": [[85, 87], [133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511], [692, 694], [694, 695], [694, 697]], "missing_branches": [[85, 86], [692, 693]], "functions": {"FakeClock.__init__": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [64, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [69, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "FakeConnection.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "FakeConnection.send": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "FakeConnection.receive": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 83, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnection.close": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "FakeConnector.__init__": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "FakeConnector.connect": {"executed_lines": [101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "FailedConnector.__init__": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "FailedConnector.connect": {"executed_lines": [115, 116], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "FakeHttp.__init__": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "FakeHttp.get": {"executed_lines": [124, 125, 126, 129], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "messages_for": {"executed_lines": [133, 134, 135, 136, 146, 147, 148, 149, 150], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148]], "missing_branches": []}, "roots": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "distinct_identity": {"executed_lines": [203, 204], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "storage_guard": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [], "missing_branches": []}, "config": {"executed_lines": [220, 221, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_full_eight_stream_bounded_probe_archives_and_normalizes": {"executed_lines": [243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "test_preflight_same_physical_volume_pauses_without_network": {"executed_lines": [301, 302, 303, 304, 305, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [], "missing_branches": []}, "test_connect_failures_use_bounded_retry_and_end_paused": {"executed_lines": [327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted": {"executed_lines": [363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive.archive_segment": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight": {"executed_lines": [402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398, "executed_branches": [], "missing_branches": []}, "test_cli_run_requires_confirmation_and_probe_bound": {"executed_lines": [438, 439, 440, 451, 452, 453, 454], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes": {"executed_lines": [460, 462, 463, 471, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[495, 496], [495, 511]], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.write": {"executed_lines": [472, 473, 474], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.__init__": {"executed_lines": [523], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.preflight_only": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.run": {"executed_lines": [530, 531], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "test_runner_fail_closed_internal_guards_and_raw_metadata": {"executed_lines": [544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage": {"executed_lines": [594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive.archive_segment": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors": {"executed_lines": [632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 631, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__enter__": {"executed_lines": [640], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 639, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__exit__": {"executed_lines": [643], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 642, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.read": {"executed_lines": [646], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 645, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.geturl": {"executed_lines": [649], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 648, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.failed": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse.geturl": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls": {"executed_lines": [681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 721, 722, 724, 727, 728, 729], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.__init__": {"executed_lines": [683, 684, 685], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.send": {"executed_lines": [688], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 687, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.recv": {"executed_lines": [691, 692, 694, 695, 697], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 690, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.close": {"executed_lines": [700], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 699, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connected": {"executed_lines": [719], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connection_failure": {"executed_lines": [725], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 194, 202, 207, 219, 242, 300, 326, 362, 398, 437, 457, 543, 591, 631, 678], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [60, 61, 64, 65, 66, 69, 70], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "FakeConnection": {"executed_lines": [75, 76, 77, 78, 81, 84, 85, 87, 90], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 73, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnector": {"executed_lines": [95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "FailedConnector": {"executed_lines": [112, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "FakeHttp": {"executed_lines": [121, 124, 125, 126, 129], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator": {"executed_lines": [523, 526, 527, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response": {"executed_lines": [640, 643, 646, 649], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.BadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 669, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying": {"executed_lines": [683, 684, 685, 688, 691, 692, 694, 695, 697, 700], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 681, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675, 678, 681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 304, "num_statements": 304, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511]], "missing_branches": []}}}, "tests\\test_capture_v2_models_storage.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 56, 57, 59, 60, 61, 62, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 606, 608, 609, 610, 612, 613, 614, 615, 616, 618, 619, 620, 622, 623, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 365, "num_statements": 367, "percent_covered": 99.46949602122015, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.4550408719346, "percent_statements_covered_display": "99", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": [], "functions": {"FakeClock.__init__": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "identities": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "guard": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "raw_frame": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "storage_roots": {"executed_lines": [112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "test_default_scope_is_exact_sorted_and_credential_free": {"executed_lines": [122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_scope_config_stream_and_retry_guards": {"executed_lines": [147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184]], "missing_branches": []}, "test_symbol_mapping_resolution_is_effective_and_point_in_time": {"executed_lines": [201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "test_raw_frame_round_trip_and_monotonic_clock": {"executed_lines": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure": {"executed_lines": [265, 266, 267, 268, 270, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 304, 312, 313, 314, 315, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.persist": {"executed_lines": [271, 272], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.failed_sink": {"executed_lines": [299, 300, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [[300, 301], [300, 302]], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths": {"executed_lines": [322, 323, 324, 325, 327, 332, 334, 335, 337, 340, 341, 343, 346, 347, 349, 352, 353, 356, 357], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.low_archive": {"executed_lines": [338], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_identity": {"executed_lines": [344], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_capacity": {"executed_lines": [350], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_segment_rotation_restore_and_no_cleanup": {"executed_lines": [361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360, "executed_branches": [], "missing_branches": []}, "test_segment_time_rotation_identity_order_and_capacity_fail_closed": {"executed_lines": [404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause": {"executed_lines": [445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 480, 481, 482, 483], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause.wrong_restore_hash": {"executed_lines": [476, 477, 478], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475, "executed_branches": [[476, 477], [476, 478]], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths": {"executed_lines": [489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 544, 545, 546, 547], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths.link_failed": {"executed_lines": [542], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed": {"executed_lines": [553, 555, 556, 557, 558, 560, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed.wrong_preflight_hash": {"executed_lines": [561, 562, 563], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 560, "executed_branches": [[561, 562], [561, 563]], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed": {"executed_lines": [597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 632, 633, 639, 640, 642, 648, 649, 651, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.__init__": {"executed_lines": [606], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.resolve": {"executed_lines": [609, 610], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 608, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__init__": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__call__": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.kernel": {"executed_lines": [626], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response": {"executed_lines": [652, 666], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 651, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response.respond": {"executed_lines": [662, 663, 664], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 74, 86, 111, 121, 146, 200, 233, 264, 319, 360, 403, 442, 486, 550, 594], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [56, 57, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath": {"executed_lines": [606, 609, 610], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub": {"executed_lines": [620, 623], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 355, "num_statements": 355, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": []}}}, "tests\\test_capture_v2_remediation.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 40, 41, 42, 43, 46, 62, 63, 64, 65, 66, 67, 68, 75, 82, 83, 84, 85, 86, 88, 90, 91, 92, 95, 96, 97, 98, 99, 102, 105, 106, 107, 108, 109, 116, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 137, 138, 140, 141, 142, 144, 145, 146, 148, 157, 158, 159, 170, 172, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 191, 192, 193, 195, 197, 198, 200, 201, 210, 211, 212, 213, 216, 217, 218, 219, 220, 229, 230, 231, 232, 233, 234, 235, 245, 246, 247, 250, 253, 254, 255, 257, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 272, 275, 276, 277, 279, 281, 282, 283, 284, 286, 287, 288, 289, 290, 299, 300, 302, 303, 307, 308, 309, 312, 313, 316, 317, 320, 321, 322, 323, 339, 340, 341, 344, 345, 346, 347, 348, 350, 351, 352, 354, 355, 356, 358, 359, 360, 361, 362, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 381, 384, 385, 387, 388, 389, 390, 391, 393, 396, 402, 403, 412, 413, 414, 415, 416, 417, 419, 420, 421, 426, 427, 430, 431, 432, 433, 434, 440, 442, 443, 444, 445, 450, 451, 452, 453, 455, 468, 469, 470, 471, 472, 475, 476, 477, 482, 483, 489, 491, 492, 494, 495, 496, 497, 498, 499, 502, 504, 505, 506, 508, 521, 522, 523, 524, 525, 526, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 540, 543, 544, 545, 552, 553, 554, 555, 557, 558, 559, 561, 562, 565, 566, 568, 570, 580, 581, 582, 583, 584, 585, 586, 587, 590, 593, 594, 595, 598, 610, 611, 612, 614, 619, 620, 621, 624, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 642, 643, 646, 647, 648, 649, 650, 652, 653, 655, 656, 657, 660, 661, 662, 663, 665, 666, 673, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 698, 701, 702, 703, 712, 713, 715, 716, 723, 732, 737, 738, 740, 746, 747, 752, 753, 758, 759, 760, 761, 762, 763, 764, 767, 770, 771, 772, 773, 782, 783, 784, 785, 786, 787, 797, 798, 799, 800, 810, 811, 816, 817, 818, 819, 820, 821, 822, 823, 834, 835, 836, 837, 838, 844, 845, 860, 861, 862, 863, 864, 866, 867, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 886, 887, 888, 889, 890, 891, 892, 894, 895, 896, 897, 898, 901, 913, 914, 915, 918, 921, 922, 923, 924, 925, 932, 933, 934, 935, 937, 938, 945, 946, 947, 949, 950, 951, 952, 953, 956, 962, 964, 965, 966, 967, 969, 978, 979, 980, 981, 982, 983, 985, 986, 987, 988, 989, 990, 993, 994, 995, 996, 997, 998, 999, 1002, 1003, 1004, 1005, 1006, 1007, 1010, 1013, 1016, 1017, 1018, 1019, 1020, 1030, 1031, 1032, 1033, 1043, 1044, 1045, 1046, 1047, 1057, 1058, 1059, 1060, 1070, 1071, 1072, 1073, 1084, 1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098, 1099, 1102, 1105, 1106, 1107, 1108, 1117, 1118, 1123, 1124, 1125, 1126, 1127, 1128, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139, 1141, 1142, 1143, 1145, 1146, 1147, 1148, 1149, 1151, 1160, 1161, 1162, 1163, 1164, 1166, 1167, 1176, 1177, 1178, 1180, 1181, 1182, 1184, 1185, 1187, 1188, 1189, 1190, 1191, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1202, 1203, 1204, 1205, 1207, 1209, 1210, 1211, 1213, 1214, 1215, 1216, 1219, 1222, 1223, 1232, 1234, 1235, 1237, 1238, 1241, 1242, 1243, 1245, 1246, 1247, 1248, 1249, 1250, 1252, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 622, "num_statements": 637, "percent_covered": 97.30941704035874, "percent_covered_display": "97", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 97.64521193092622, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 3, "covered_branches": 29, "missing_branches": 3, "percent_branches_covered": 90.625, "percent_branches_covered_display": "91"}, "missing_lines": [53, 54, 55, 56, 57, 59, 93, 173, 174, 310, 500, 563, 658, 868, 1239], "excluded_lines": [], "executed_branches": [[84, 85], [84, 88], [91, 92], [177, 178], [177, 179], [260, 261], [260, 262], [281, 282], [281, 284], [308, 309], [339, -320], [339, 340], [369, 370], [369, 371], [372, 373], [372, 375], [389, 390], [389, 391], [496, 497], [496, 498], [554, 555], [554, 557], [656, 657], [933, 934], [933, 935], [1092, -1090], [1092, 1093], [1147, 1148], [1147, 1149]], "missing_branches": [[91, 93], [308, 310], [656, 658]], "functions": {"_process_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54, 55, 56, 57, 59], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads": {"executed_lines": [63, 64, 65, 66, 67, 68, 75, 82, 83, 84, 85, 86, 88, 90, 95, 96, 97, 98, 99], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[84, 85], [84, 88]], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads.fail_after_initial": {"executed_lines": [91, 92], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [93], "excluded_lines": [], "start_line": 90, "executed_branches": [[91, 92]], "missing_branches": [[91, 93]]}, "test_illegal_transition_is_durable_and_failed_illegal_audit_is_not_counted": {"executed_lines": [105, 106, 107, 108, 109, 116, 123, 124, 125, 126, 127, 128, 129, 130, 131], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes": {"executed_lines": [137, 138, 140, 144, 148, 157, 158, 159, 170, 172, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134, "executed_branches": [[177, 178], [177, 179]], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.capacity": {"executed_lines": [141, 142], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.tree": {"executed_lines": [145, 146], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.counted_fsync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [173, 174], "excluded_lines": [], "start_line": 172, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches": {"executed_lines": [191, 192, 193, 195, 200, 201, 210, 211, 212, 213], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches.counted": {"executed_lines": [197, 198], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195, "executed_branches": [], "missing_branches": []}, "_journal_with_lineage": {"executed_lines": [217, 218, 219, 220, 229, 230, 231, 232, 233, 234, 235, 245, 246, 247], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries": {"executed_lines": [253, 254, 255, 257, 264, 265, 266, 267, 268, 269], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 250, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries.fail_once": {"executed_lines": [259, 260, 261, 262], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [[260, 261], [260, 262]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery": {"executed_lines": [275, 276, 277, 279, 286, 287, 288, 289, 290, 299, 300, 302, 303, 307, 312, 313, 316, 317], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272, "executed_branches": [], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.receipt_fails_once": {"executed_lines": [281, 282, 283, 284], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [[281, 282], [281, 284]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.failure_record_fails": {"executed_lines": [308, 309], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [310], "excluded_lines": [], "start_line": 307, "executed_branches": [[308, 309]], "missing_branches": [[308, 310]]}, "test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains": {"executed_lines": [321, 322, 323, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320, "executed_branches": [[339, -320], [339, 340]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe": {"executed_lines": [345, 346, 347, 348, 350, 354, 355, 356, 358, 359, 360, 361, 362, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344, "executed_branches": [[369, 370], [369, 371], [372, 373], [372, 375]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe.publish_same": {"executed_lines": [351, 352], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent": {"executed_lines": [384, 385, 387, 393, 396, 402, 403, 412, 413, 414, 415, 416, 417, 419, 420, 421, 426, 427], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent.identity": {"executed_lines": [388, 389, 390, 391], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 387, "executed_branches": [[389, 390], [389, 391]], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot": {"executed_lines": [431, 432, 433, 434, 440, 442, 443, 450, 451, 455, 468, 469, 470, 471, 472], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 430, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection.__init__": {"executed_lines": [444, 445], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector.connect": {"executed_lines": [452, 453], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused": {"executed_lines": [476, 477, 482, 483, 489, 491, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise": {"executed_lines": [492, 494, 495, 502, 504, 505, 508, 521, 522, 523, 524, 525, 526], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 491, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection.receive": {"executed_lines": [496, 497, 498, 499], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [500], "excluded_lines": [], "start_line": 495, "executed_branches": [[496, 497], [496, 498]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector.connect": {"executed_lines": [506], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 505, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures": {"executed_lines": [543, 544, 545, 552, 553, 570, 580, 581, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 540, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect": {"executed_lines": [554, 555, 557, 558, 561, 565, 568], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 553, "executed_branches": [[554, 555], [554, 557]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.send": {"executed_lines": [559], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 558, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.receive": {"executed_lines": [562], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [563], "excluded_lines": [], "start_line": 561, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.close": {"executed_lines": [566], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 565, "executed_branches": [], "missing_branches": []}, "test_preflight_report_uses_honest_zero_audit_and_report_publish_fails_closed": {"executed_lines": [593, 594, 595, 598, 610, 611, 612, 614, 619, 620, 621], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 590, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches": {"executed_lines": [627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 642, 643, 646, 647, 648, 649, 650, 652, 653, 655, 660, 661, 662, 663, 665, 666, 673, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 624, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches.wrong_staging_hash": {"executed_lines": [656, 657], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [658], "excluded_lines": [], "start_line": 655, "executed_branches": [[656, 657]], "missing_branches": [[656, 658]]}, "test_storage_ack_reload_identity_and_restore_parent_fail_closed": {"executed_lines": [701, 702, 703, 712, 713, 715, 716, 723, 732, 737, 738, 740, 746, 747, 752, 753, 758, 759, 760, 761, 762, 763, 764], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 698, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_and_abort_negative_branches": {"executed_lines": [770, 771, 772, 773, 782, 783, 784, 785, 786, 787, 797, 798, 799, 800, 810, 811, 816, 817, 818, 819, 820, 821, 822, 823], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 767, "executed_branches": [], "missing_branches": []}, "_runner_for_negative_test": {"executed_lines": [835, 836, 837, 838, 844, 845], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 834, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards": {"executed_lines": [861, 862, 863, 864, 866, 867, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 860, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [868], "excluded_lines": [], "start_line": 867, "executed_branches": [], "missing_branches": []}, "test_runner_audit_failure_and_coordinator_run_preflight_failure": {"executed_lines": [887, 888, 889, 890, 891, 892, 894, 895, 896, 897, 898, 901, 913, 914, 915], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 886, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight": {"executed_lines": [921, 922, 923, 924, 925, 932, 937, 938, 945, 946, 947, 949, 950, 951, 952, 953, 956, 962, 964, 965, 969, 978, 985, 986, 987, 988, 989, 990], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 918, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.unhandled": {"executed_lines": [933, 934, 935], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 932, "executed_branches": [[933, 934], [933, 935]], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector.connect": {"executed_lines": [966, 967], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 965, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.cancel_outer": {"executed_lines": [979, 980, 981, 982, 983], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 978, "executed_branches": [], "missing_branches": []}, "_failed_epoch_for_recovery": {"executed_lines": [994, 995, 996, 997, 998, 999], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 993, "executed_branches": [], "missing_branches": []}, "_rewrite_failure": {"executed_lines": [1003, 1004, 1005, 1006, 1007, 1010], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1002, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush": {"executed_lines": [1016, 1017, 1018, 1019, 1020, 1030, 1031, 1032, 1033, 1043, 1044, 1045, 1046, 1047, 1057, 1058, 1059, 1060, 1070, 1071, 1072, 1073], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1013, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable": {"executed_lines": [1087, 1088, 1090, 1095, 1096, 1097, 1098, 1099], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1084, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable.corrupt_receipt": {"executed_lines": [1091, 1092, 1093], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1090, "executed_branches": [[1092, -1090], [1092, 1093]], "missing_branches": []}, "test_epoch_abort_publish_failure_keeps_retryable_open_state": {"executed_lines": [1105, 1106, 1107, 1108, 1117, 1118, 1123, 1124, 1125, 1126, 1127, 1128], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1102, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge": {"executed_lines": [1132, 1133, 1134, 1135, 1136, 1138, 1139, 1141, 1142, 1145, 1151, 1160, 1161, 1162, 1163, 1164, 1166, 1167, 1176, 1177, 1178, 1180, 1181, 1184, 1187, 1188, 1189, 1190, 1191, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1202, 1203, 1207, 1209, 1210, 1213, 1214, 1215, 1216], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1131, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.__init__": {"executed_lines": [1143], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1142, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.connect": {"executed_lines": [1146, 1147, 1148, 1149], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1145, "executed_branches": [[1147, 1148], [1147, 1149]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.__init__": {"executed_lines": [1182], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.connect": {"executed_lines": [1185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1184, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection.__init__": {"executed_lines": [1204, 1205], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1203, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector.connect": {"executed_lines": [1211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1210, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report": {"executed_lines": [1222, 1223, 1232, 1234, 1252, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1219, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise": {"executed_lines": [1235, 1237, 1238, 1241, 1245, 1246, 1247, 1248, 1249, 1250], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1234, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1239], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.sleep": {"executed_lines": [1242, 1243], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1241, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 40, 41, 42, 43, 46, 62, 102, 134, 188, 216, 250, 272, 320, 344, 381, 430, 475, 540, 590, 624, 698, 767, 834, 860, 886, 918, 993, 1002, 1013, 1084, 1102, 1131, 1219], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection": {"executed_lines": [444, 445], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector": {"executed_lines": [452, 453], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 450, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection": {"executed_lines": [496, 497, 498, 499], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [500], "excluded_lines": [], "start_line": 494, "executed_branches": [[496, 497], [496, 498]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector": {"executed_lines": [506], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector": {"executed_lines": [554, 555, 557, 558, 561, 565, 568], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552, "executed_branches": [[554, 555], [554, 557]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked": {"executed_lines": [559, 562, 566], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [563], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [868], "excluded_lines": [], "start_line": 866, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector": {"executed_lines": [966, 967], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 964, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect": {"executed_lines": [1143, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [[1147, 1148], [1147, 1149]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover": {"executed_lines": [1182, 1185], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1180, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection": {"executed_lines": [1204, 1205], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1202, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector": {"executed_lines": [1211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1209, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock": {"executed_lines": [1242, 1243], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1239], "excluded_lines": [], "start_line": 1237, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 40, 41, 42, 43, 46, 62, 63, 64, 65, 66, 67, 68, 75, 82, 83, 84, 85, 86, 88, 90, 91, 92, 95, 96, 97, 98, 99, 102, 105, 106, 107, 108, 109, 116, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 137, 138, 140, 141, 142, 144, 145, 146, 148, 157, 158, 159, 170, 172, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 191, 192, 193, 195, 197, 198, 200, 201, 210, 211, 212, 213, 216, 217, 218, 219, 220, 229, 230, 231, 232, 233, 234, 235, 245, 246, 247, 250, 253, 254, 255, 257, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 272, 275, 276, 277, 279, 281, 282, 283, 284, 286, 287, 288, 289, 290, 299, 300, 302, 303, 307, 308, 309, 312, 313, 316, 317, 320, 321, 322, 323, 339, 340, 341, 344, 345, 346, 347, 348, 350, 351, 352, 354, 355, 356, 358, 359, 360, 361, 362, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 381, 384, 385, 387, 388, 389, 390, 391, 393, 396, 402, 403, 412, 413, 414, 415, 416, 417, 419, 420, 421, 426, 427, 430, 431, 432, 433, 434, 440, 442, 443, 450, 451, 455, 468, 469, 470, 471, 472, 475, 476, 477, 482, 483, 489, 491, 492, 494, 495, 502, 504, 505, 508, 521, 522, 523, 524, 525, 526, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 540, 543, 544, 545, 552, 553, 570, 580, 581, 582, 583, 584, 585, 586, 587, 590, 593, 594, 595, 598, 610, 611, 612, 614, 619, 620, 621, 624, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 642, 643, 646, 647, 648, 649, 650, 652, 653, 655, 656, 657, 660, 661, 662, 663, 665, 666, 673, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 698, 701, 702, 703, 712, 713, 715, 716, 723, 732, 737, 738, 740, 746, 747, 752, 753, 758, 759, 760, 761, 762, 763, 764, 767, 770, 771, 772, 773, 782, 783, 784, 785, 786, 787, 797, 798, 799, 800, 810, 811, 816, 817, 818, 819, 820, 821, 822, 823, 834, 835, 836, 837, 838, 844, 845, 860, 861, 862, 863, 864, 866, 867, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 886, 887, 888, 889, 890, 891, 892, 894, 895, 896, 897, 898, 901, 913, 914, 915, 918, 921, 922, 923, 924, 925, 932, 933, 934, 935, 937, 938, 945, 946, 947, 949, 950, 951, 952, 953, 956, 962, 964, 965, 969, 978, 979, 980, 981, 982, 983, 985, 986, 987, 988, 989, 990, 993, 994, 995, 996, 997, 998, 999, 1002, 1003, 1004, 1005, 1006, 1007, 1010, 1013, 1016, 1017, 1018, 1019, 1020, 1030, 1031, 1032, 1033, 1043, 1044, 1045, 1046, 1047, 1057, 1058, 1059, 1060, 1070, 1071, 1072, 1073, 1084, 1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098, 1099, 1102, 1105, 1106, 1107, 1108, 1117, 1118, 1123, 1124, 1125, 1126, 1127, 1128, 1131, 1132, 1133, 1134, 1135, 1136, 1138, 1139, 1141, 1142, 1145, 1151, 1160, 1161, 1162, 1163, 1164, 1166, 1167, 1176, 1177, 1178, 1180, 1181, 1184, 1187, 1188, 1189, 1190, 1191, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1202, 1203, 1207, 1209, 1210, 1213, 1214, 1215, 1216, 1219, 1222, 1223, 1232, 1234, 1235, 1237, 1238, 1241, 1245, 1246, 1247, 1248, 1249, 1250, 1252, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 589, "num_statements": 600, "percent_covered": 97.76357827476038, "percent_covered_display": "98", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 98.16666666666667, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 3, "covered_branches": 23, "missing_branches": 3, "percent_branches_covered": 88.46153846153847, "percent_branches_covered_display": "88"}, "missing_lines": [53, 54, 55, 56, 57, 59, 93, 173, 174, 310, 658], "excluded_lines": [], "start_line": 1, "executed_branches": [[84, 85], [84, 88], [91, 92], [177, 178], [177, 179], [260, 261], [260, 262], [281, 282], [281, 284], [308, 309], [339, -320], [339, 340], [369, 370], [369, 371], [372, 373], [372, 375], [389, 390], [389, 391], [656, 657], [933, 934], [933, 935], [1092, -1090], [1092, 1093]], "missing_branches": [[91, 93], [308, 310], [656, 658]]}}}, "tests\\test_capture_v2_synchronizers_epoch.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 369, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 260, "num_statements": 262, "percent_covered": 99.24812030075188, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23664122137404, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": [], "functions": {"stream": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "resolver": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "frame": {"executed_lines": [59, 60, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "binance_snapshot": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "binance_update": {"executed_lines": [87, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[97, 98], [97, 99]], "missing_branches": []}, "okx_message": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "storage": {"executed_lines": [124, 125, 126, 128, 132, 141], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit": {"executed_lines": [145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed": {"executed_lines": [177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [], "missing_branches": []}, "test_binance_snapshot_malformed_and_crossed": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [], "missing_branches": []}, "test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot": {"executed_lines": [217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset": {"executed_lines": [237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "test_okx_gap_heartbeat_levels_errors_and_envelope_guards": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "test_binance_wire_and_book_negative_branches_are_fail_closed": {"executed_lines": [305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [[341, 342], [341, 347]], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync": {"executed_lines": [367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver.resolve": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_sequence_normalizer_no_change_branch_is_strict": {"executed_lines": [395, 396, 397, 400, 401, 402, 405, 406, 409, 410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394, "executed_branches": [], "missing_branches": []}, "test_normalized_epoch_journal_publishes_complete_raw_lineage": {"executed_lines": [419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418, "executed_branches": [], "missing_branches": []}, "test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible": {"executed_lines": [461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "test_epoch_configuration_closed_abort_and_part_integrity_guards": {"executed_lines": [530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 53, 58, 78, 86, 102, 123, 144, 176, 201, 208, 216, 236, 279, 304, 366, 394, 418, 460, 529], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.24528301886792, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": []}}}, "tests\\test_catalog.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_register_and_list": {"executed_lines": [8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_catalog_factors.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_registers_quant_factors_stack": {"executed_lines": [8, 9, 10, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "test_qdk_catalog_list_shows_factors_version": {"executed_lines": [15, 16, 17, 18, 19], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_curated.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "normalized_trades": {"executed_lines": [43, 52, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "curate": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "test_session_bar_aggregation_is_deterministic_and_session_anchored": {"executed_lines": [78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_session_bar_refuses_missing_or_future_session_start": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_curated_revision_is_immutable_and_lineage_changes_snapshot": {"executed_lines": [119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_curated_partition_mutation_is_detected": {"executed_lines": [164, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_curated_reader_rejects_dataset_and_snapshot_path_traversal": {"executed_lines": [178, 179, 180, 181], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 42, 64, 77, 106, 118, 163, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_data_lake.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade_record": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "admitted_raw": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "test_raw_bytes_are_immutable_idempotent_and_conflict_on_key_reuse": {"executed_lines": [75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "test_raw_mutation_is_detected": {"executed_lines": [114, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [], "missing_branches": []}, "test_raw_request_metadata_must_be_canonical_json": {"executed_lines": [130, 131], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "test_capacity_policy_stops_with_explicit_alert": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_cleanup_requires_verified_archive_restore_and_explicit_confirmation": {"executed_lines": [166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_normalized_partitions_quarantine_bad_stream_and_pin_duckdb_snapshot": {"executed_lines": [229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "test_normalized_partition_mutation_fails_hash_validation": {"executed_lines": [274, 275, 283, 284, 285, 286, 287, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_cross_is_quarantined_before_research_layer": {"executed_lines": [292, 293, 319, 336, 344, 345, 346, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_checkpoint_mismatch_is_quarantined": {"executed_lines": [351, 352, 378, 379, 388, 389, 390, 391], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_provider_mismatch_and_non_finite_payload_are_quarantine_evidence": {"executed_lines": [399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 56, 74, 113, 129, 141, 163, 226, 273, 291, 350, 396], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_integrity_branch_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]], "functions": {"normalized": {"executed_lines": [42, 51, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "legacy_normalized": {"executed_lines": [64, 73, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw": {"executed_lines": [88, 89, 98, 107, 108, 109, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [], "missing_branches": []}, "readdress_normalized": {"executed_lines": [135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177]], "missing_branches": []}, "test_normalized_manifest_defense_branches": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches": {"executed_lines": [247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 269, 270, 271], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches.mismatched_load": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards": {"executed_lines": [285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [327], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards.wrong_staging_hash": {"executed_lines": [300, 301], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301]], "missing_branches": [[300, 302]]}, "test_normalized_claim_schema_and_manifest_file_shape": {"executed_lines": [340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "test_legacy_normalized_manifest_remains_strictly_verifiable": {"executed_lines": [408, 409, 410, 411], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed": {"executed_lines": [415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414, "executed_branches": [], "missing_branches": []}, "test_legacy_snapshot_rejects_unexpected_file": {"executed_lines": [469, 470, 471, 472, 473], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [], "missing_branches": []}, "test_raw_path_staging_and_archive_negative_guards": {"executed_lines": [484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": []}, "test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed": {"executed_lines": [529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "readdress_curated": {"executed_lines": [581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": []}, "curated": {"executed_lines": [604, 605], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_defense_branches": {"executed_lines": [667, 668, 669, 670], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_file_and_extra_file_guards": {"executed_lines": [679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_l2_reconstructed_empty_level_guard": {"executed_lines": [706, 707, 708], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 63, 85, 128, 180, 231, 243, 281, 339, 357, 402, 414, 468, 480, 528, 574, 603, 617, 661, 678, 705], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "start_line": 1, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]]}}}, "tests\\test_l2_replay.py": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": [], "functions": {"snapshot": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11, "executed_branches": [], "missing_branches": []}, "delta": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "apply_atomic_group": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "test_gap_duplicate_and_out_of_order_are_rejected": {"executed_lines": [122, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_crossed_delta_is_transactional_and_does_not_pollute_state": {"executed_lines": [127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once": {"executed_lines": [138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 170, 175, 176, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160]], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once.counted_assert": {"executed_lines": [167, 168], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_allows_transient_cross_but_commits_valid_final_book": {"executed_lines": [181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [[192, 193], [192, 196], [193, 192], [193, 194]], "missing_branches": []}, "test_atomic_multi_level_group_rejects_bad_row_and_rolls_back": {"executed_lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [[246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}, "test_atomic_multi_level_group_defensive_entry_guards_preserve_state": {"executed_lines": [258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [], "missing_branches": []}, "test_delete_absent_level_and_price_scale_change_are_rejected": {"executed_lines": [308, 309, 310, 317, 318, 319, 320, 321, 322], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [], "missing_branches": []}, "test_checkpoint_mismatch_and_missing_checkpoint_fail": {"executed_lines": [326, 327, 328, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [], "missing_branches": []}, "test_snapshot_duplicate_price_and_cross_are_rejected_by_frozen_contract": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_resync_snapshot_cannot_switch_stream_identity": {"executed_lines": [345, 346, 347, 348, 349, 350, 351, 352], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344, "executed_branches": [], "missing_branches": []}, "test_uninitialized_unsupported_and_non_snapshot_entry_fail_closed": {"executed_lines": [356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_snapshot_and_delta_time_and_sequence_must_strictly_advance": {"executed_lines": [370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369, "executed_branches": [], "missing_branches": []}, "test_validated_snapshot_and_batch_guards_preserve_state": {"executed_lines": [389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [], "missing_branches": []}, "test_private_validated_dispatch_and_uniform_batch_fail_closed": {"executed_lines": [416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 7, 8, 11, 50, 79, 99, 113, 121, 126, 135, 180, 210, 241, 257, 307, 325, 333, 344, 355, 369, 388, 415], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}}}, "tests\\test_m2_audit_regressions.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]], "functions": {"trade": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "raw": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "normalized": {"executed_lines": [78, 79, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable": {"executed_lines": [95, 96, 105, 107, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable.interrupted_replace": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[108, 109], [108, 110]], "missing_branches": []}, "test_preexisting_half_object_is_quarantined_without_blocking_retry": {"executed_lines": [122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_manifest_anchor_detects_coordinated_retention_and_collection_mutation": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_raw_write_read_and_cleanup_reject_junction_escape": {"executed_lines": [159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [171, 188], "excluded_lines": [], "start_line": 158, "executed_branches": [[170, 172], [187, 189]], "missing_branches": [[170, 171], [187, 188]]}, "test_raw_write_rejects_symbolic_link_escape": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "test_cleanup_rejects_fabricated_missing_and_remote_archives": {"executed_lines": [223, 224, 231, 232, 233, 240, 241, 242], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222, "executed_branches": [[231, 232], [231, 240]], "missing_branches": []}, "test_normalized_requires_existing_unmodified_raw_reference": {"executed_lines": [252, 253, 256, 257, 265, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "test_global_event_id_duplicates_across_streams_are_all_quarantined": {"executed_lines": [279, 280, 281, 282, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278, "executed_branches": [], "missing_branches": []}, "test_arrow_canonical_timestamp_and_physical_snapshot_binding": {"executed_lines": [298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [], "missing_branches": []}, "test_duckdb_blocks_direct_cte_and_parameterized_external_reads": {"executed_lines": [326, 327, 328, 331, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [[338, -325], [338, 339]], "missing_branches": []}, "test_curated_rejects_fake_lineage_and_binds_physical_content": {"executed_lines": [344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_normalized_and_curated_writers_apply_capacity_gate": {"executed_lines": [382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 65, 77, 91, 121, 143, 157, 158, 209, 210, 222, 251, 278, 297, 325, 343, 381], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 1, "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]]}}}, "tests\\test_m2_coverage_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": [], "functions": {"_replace": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "test_schema_negative_branch_matrix": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "test_schema_delete_delta_corporate_ratio_and_registry_fail_closed": {"executed_lines": [99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[114, 115], [114, 119]], "missing_branches": []}, "test_data_lake_guard_branches_are_explicit": {"executed_lines": [130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [[135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176]], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable": {"executed_lines": [202, 203, 204, 206, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable.fail_replace": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_raw_manifest_fields_are_independently_anchored": {"executed_lines": [250, 251, 252, 253, 254, 255, 256], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "test_raw_directory_claim_and_cleanup_state_guards": {"executed_lines": [260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [], "missing_branches": []}, "test_quarantine_published_batch_is_fully_verified": {"executed_lines": [302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301, "executed_branches": [[313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322]], "missing_branches": []}, "test_empty_quarantine_and_unknown_event_helpers_are_closed": {"executed_lines": [334, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit": {"executed_lines": [350, 356, 358, 363, 370, 371, 372, 374, 377, 378, 386, 388, 393, 400, 401, 402, 404, 407, 408, 416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.windows_lock": {"executed_lines": [359, 360, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358, "executed_branches": [[360, -358], [360, 361]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.always_contended": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_lock": {"executed_lines": [389, 390, 391], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [[390, -388], [390, 391]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_always_contended": {"executed_lines": [405], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_raw_claim_cleanup_and_deleting_state_tampering_fail_closed": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[444, 448], [444, 457]], "missing_branches": []}, "test_normalized_admission_and_snapshot_metadata_guards": {"executed_lines": [472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_curated_writer_and_reader_negative_guards": {"executed_lines": [512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_and_revision_tampering_are_rejected": {"executed_lines": [571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 64, 93, 98, 129, 198, 235, 244, 259, 300, 301, 333, 349, 425, 471, 511, 570], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": []}}}, "tests\\test_m2_integration.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]], "functions": {"crypto_context": {"executed_lines": [20, 21, 27, 36], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 19, "executed_branches": [[20, 21]], "missing_branches": [[20, 29]]}, "test_public_m2_api_and_version_are_exposed": {"executed_lines": [40, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, -39], [41, 51]], "missing_branches": []}, "test_build_and_runtime_versions_share_one_authoritative_source": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable": {"executed_lines": [62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "test_domestic_fixture_chain_remains_fixture_only": {"executed_lines": [136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 39, 54, 61, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]]}}}, "tests\\test_m2_process_integrity.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]], "functions": {"_raw_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [51, 52, 53, 55, 62, 63, 64, 73, 74, 75], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": [[52, 53], [52, 63]]}, "_raw_process.crash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": [[56, 59], [56, 60]]}, "_cleanup_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [85, 86, 87, 94, 95, 96], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "_quarantine_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [100, 101, 102, 109, 110, 111], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_normalized_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [121, 122, 123, 131, 132, 133], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [137, 138, 139, 141, 146, 147, 148], "excluded_lines": [], "start_line": 136, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process.crash_before_replace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[142, 143], [142, 144]]}, "_normalized_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [156, 158, 163, 164], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "_normalized_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 158, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "_curated_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [180, 181, 182, 194, 195, 196], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [200, 202, 207, 208], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [203, 204, 205], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": [[203, 204], [203, 205]]}, "_hold_staging_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230, 236, 237, 238, 239], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "_run_pair": {"executed_lines": [243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 242, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264]], "missing_branches": [[254, 255]]}, "_raw": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_normalized": {"executed_lines": [282, 283, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_raw_key_lock_is_process_safe": {"executed_lines": [297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, 307], [306, 310]], "missing_branches": []}, "test_raw_key_claim_survives_corruption_and_hard_exit_staging": {"executed_lines": [317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [], "missing_branches": []}, "test_raw_key_claim_is_source_global_across_collection_dates": {"executed_lines": [353, 354, 363, 364, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes": {"executed_lines": [382, 383, 384, 385, 386, 394, 395, 397, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[415, 416], [415, 420]], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes.fail_once": {"executed_lines": [399, 400, 401, 402], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, 400], [399, 402]], "missing_branches": []}, "test_cleanup_same_key_is_process_idempotent": {"executed_lines": [433, 434, 435, 436, 437, 445, 452, 453, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable": {"executed_lines": [461, 462, 463, 464, 466, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable.fail_manifest": {"executed_lines": [468, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466, "executed_branches": [[468, 469], [468, 471]], "missing_branches": []}, "test_adapter_batch_transaction_rolls_back_final_validation_failure": {"executed_lines": [507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[515, 516], [515, 518], [527, 528], [527, 529]], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 579, 580, 581, 589, 590, 591, 599], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry.fail_snapshot_publish": {"executed_lines": [574, 575, 576, 577], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "test_event_claim_and_curated_revision_are_process_safe": {"executed_lines": [603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding": {"executed_lines": [637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovery_is_process_safe": {"executed_lines": [658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 657, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovers_and_preserves_binding": {"executed_lines": [694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovery_is_process_safe": {"executed_lines": [742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 741, "executed_branches": [], "missing_branches": []}, "_curated_process_once": {"executed_lines": [766], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 765, "executed_branches": [], "missing_branches": []}, "test_atomic_normalized_and_curated_staging_recover_after_hard_exit": {"executed_lines": [779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 778, "executed_branches": [[782, 783], [782, 790]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 269, 281, 295, 296, 316, 352, 376, 377, 432, 457, 502, 503, 532, 602, 636, 657, 693, 741, 765, 778], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 1, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]]}}}, "tests\\test_normalized_v3.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": [], "functions": {"_record_batch": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "_strict_batches": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "_assert_no_snapshot": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_raw": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims": {"executed_lines": [84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134]], "missing_branches": []}, "test_native_writer_validator_matches_frozen_validator_for_l2_edges": {"executed_lines": [139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[150, 151], [150, 154], [154, -138], [154, 155]], "missing_branches": []}, "test_v3_manifest_is_compact_and_does_not_create_per_event_json": {"executed_lines": [163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162, "executed_branches": [[165, 166], [165, 171]], "missing_branches": []}, "test_missing_claim_index_recovers_but_tampering_fails_closed": {"executed_lines": [200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_streaming_writer_applies_capacity_gate_before_partition_write": {"executed_lines": [230, 231, 236, 237, 245], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints": {"executed_lines": [251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248, "executed_branches": [[277, 278], [277, 287]], "missing_branches": []}, "test_record_batch_reader_is_a_supported_strict_input": {"executed_lines": [291, 292, 293, 294, 295, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary": {"executed_lines": [303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 330, 335, 344, 345, 346, 347, 348], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[318, 319], [318, 323], [320, 318], [320, 321]], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary.observed_apply": {"executed_lines": [327, 328], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries": {"executed_lines": [354, 356, 361, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [], "missing_branches": []}, "test_arrow_schema_pit_sequence_and_duplicate_fail_closed": {"executed_lines": [373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372, "executed_branches": [[416, -372], [416, 417]], "missing_branches": []}, "test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected": {"executed_lines": [426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 423, "executed_branches": [[437, 438], [437, 439], [457, -423], [457, 458]], "missing_branches": []}, "test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed": {"executed_lines": [467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464, "executed_branches": [], "missing_branches": []}, "test_arrow_float_schema_preserves_frozen_claims_and_logical_rows": {"executed_lines": [505, 507, 512, 513, 514, 515, 523, 524, 525, 526], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [], "missing_branches": []}, "test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary": {"executed_lines": [540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537, "executed_branches": [], "missing_branches": []}, "test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices": {"executed_lines": [575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[576, 577], [576, 578]], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries": {"executed_lines": [610, 611, 613, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries.fail_snapshot_publish": {"executed_lines": [615, 616, 617, 618], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613, "executed_branches": [[615, 616], [615, 618]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 44, 64, 69, 81, 138, 162, 199, 229, 248, 290, 299, 351, 372, 423, 464, 504, 537, 572, 606], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": []}}}, "tests\\test_normalized_v3_failures.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": [], "functions": {"_encoded_delta_group": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54]], "missing_branches": []}, "_set_path": {"executed_lines": [60, 61, 62, 63], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[61, 62], [61, 63]], "missing_branches": []}, "test_native_l2_validator_exercises_failure_semantics": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "test_input_spool_fallback_and_malformed_records_are_explicit": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [], "missing_branches": []}, "test_digest_and_staging_corruption_guards": {"executed_lines": [143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 139, "executed_branches": [], "missing_branches": []}, "_rewrite_index_manifest": {"executed_lines": [173, 174, 175, 176, 179], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "test_claim_index_manifest_tampering_fails_closed": {"executed_lines": [184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215]], "missing_branches": []}, "test_claim_index_schema_logical_shape_and_missing_manifest_paths": {"executed_lines": [224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221, "executed_branches": [], "missing_branches": []}, "test_v3_claim_conflicts_include_historical_legacy_snapshots": {"executed_lines": [315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314, "executed_branches": [], "missing_branches": []}, "_replace_column": {"executed_lines": [356, 357], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_delta_constraints_fail_closed": {"executed_lines": [434, 435, 436, 441], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_action_quantity_contract": {"executed_lines": [458, 459, 460], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_arrow_common_null_empty_precision_source_and_sequence_guards": {"executed_lines": [468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[484, 485], [484, 486], [487, -467], [487, 488]], "missing_branches": []}, "test_arrow_input_reference_and_empty_batch_contracts": {"executed_lines": [495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries": {"executed_lines": [547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546, "executed_branches": [], "missing_branches": []}, "test_encoded_group_layout_and_concat_helpers_fail_closed": {"executed_lines": [586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585, "executed_branches": [], "missing_branches": []}, "test_encoded_group_checkpoint_and_time_fallbacks_remain_strict": {"executed_lines": [631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[647, 648], [647, 649]], "missing_branches": []}, "test_encoded_atomic_group_negative_gates_publish_nothing": {"executed_lines": [709, 710, 711, 712, 713, 714, 715, 720], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 703, "executed_branches": [], "missing_branches": []}, "test_encoded_atomic_group_duplicate_claim_is_not_bypassed": {"executed_lines": [724, 725, 726, 727, 728, 729, 734], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 723, "executed_branches": [], "missing_branches": []}, "test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts": {"executed_lines": [738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[764, -737], [764, 765]], "missing_branches": []}, "test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing": {"executed_lines": [779, 780, 781, 782, 791], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 776, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_reject_cross_batch_partition_time_regression": {"executed_lines": [795, 796, 797, 798, 799, 804], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 794, "executed_branches": [], "missing_branches": []}, "test_mapping_unsorted_partition_is_sorted_without_changing_events": {"executed_lines": [808, 809, 810, 811, 812, 820, 821, 826], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 807, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path": {"executed_lines": [833, 834, 836, 840, 841, 842, 847, 848, 849], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path.observed_capacity": {"executed_lines": [837, 838], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [], "missing_branches": []}, "test_arrow_common_datetime_is_utc_and_partition_digest_is_strict": {"executed_lines": [853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 852, "executed_branches": [], "missing_branches": []}, "test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts": {"executed_lines": [880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 879, "executed_branches": [], "missing_branches": []}, "test_partition_buffers_reject_internal_schema_and_sort_corruption": {"executed_lines": [907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903, "executed_branches": [[979, 980], [979, 982]], "missing_branches": []}, "test_partition_scans_and_empty_claim_helpers_are_defensive": {"executed_lines": [989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 988, "executed_branches": [], "missing_branches": []}, "test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish": {"executed_lines": [1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1032, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible": {"executed_lines": [1065, 1066, 1067, 1069, 1072, 1073, 1074], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1061, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible.mismatched_load": {"executed_lines": [1070], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1069, "executed_branches": [], "missing_branches": []}, "test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed": {"executed_lines": [1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1077, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults": {"executed_lines": [1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1126, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults.observed_capacity": {"executed_lines": [1148, 1149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1147, "executed_branches": [], "missing_branches": []}, "test_strict_claim_count_fault_does_not_publish": {"executed_lines": [1185, 1186, 1187, 1188], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181, "executed_branches": [], "missing_branches": []}, "test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards": {"executed_lines": [1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1191, "executed_branches": [], "missing_branches": []}, "test_duplicate_spool_ignores_non_string_ids_and_finds_repeats": {"executed_lines": [1240, 1241, 1252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1239, "executed_branches": [], "missing_branches": []}, "test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream": {"executed_lines": [1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1255, "executed_branches": [], "missing_branches": []}, "test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams": {"executed_lines": [1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1281, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 59, 66, 96, 109, 139, 169, 182, 183, 221, 314, 355, 360, 427, 444, 451, 467, 494, 546, 585, 630, 673, 703, 723, 737, 776, 794, 807, 829, 852, 879, 903, 988, 1032, 1061, 1077, 1126, 1181, 1191, 1239, 1255, 1281], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 1, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": []}}}, "tests\\test_panel.py": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_merge_earnings_to_panel": {"executed_lines": [11, 18, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_merge_northbound_to_panel": {"executed_lines": [35, 42, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "test_add_industry_relative_strength": {"executed_lines": [54, 62, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 10, 34, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_alt.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_earnings_forecast_mock": {"executed_lines": [9, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_fetch_earnings_forecast_mock.mock_fetch": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock": {"executed_lines": [26, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock.mock_fetch": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock": {"executed_lines": [41, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock.mock_fetch": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 25, 40], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_prices.py": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_daily_prices_mock": {"executed_lines": [7, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "test_fetch_daily_prices_mock.mock_fetch": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_snapshots.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_snapshot_is_content_addressed_and_idempotent": {"executed_lines": [9, 10, 11, 12, 13, 14], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_snapshot_detects_mutation": {"executed_lines": [18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_storage.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_validate_price_frame_ok": {"executed_lines": [11, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_validate_price_frame_missing_column": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_cache_covers_range": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "test_save_manifest": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "test_should_refresh_cache": {"executed_lines": [50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 27, 33, 39, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_temporal.py": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_point_in_time_join_uses_availability_not_event_date": {"executed_lines": [13, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "test_audit_rejects_future_data": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "test_apply_symbol_lifecycle_keeps_delisted_history": {"executed_lines": [42, 48, 51, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 12, 35, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_universe.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_historical_universe_refuses_survivorship_fallback": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_historical_universe_allows_explicit_current_fallback": {"executed_lines": [22, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 21], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_v2_contract_branches.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": [], "functions": {"fp": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "test_market_event_base_and_simple_event_negative_contracts": {"executed_lines": [57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[77, 78], [77, 80]], "missing_branches": []}, "_bar": {"executed_lines": [111, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "test_bar_contract_rejects_each_structural_violation": {"executed_lines": [128, 129, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[138, -127], [138, 139]], "missing_branches": []}, "_snapshot": {"executed_lines": [144, 149, 150], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_book_snapshot_and_delta_negative_contracts": {"executed_lines": [154, 173, 174, 175, 177, 185, 194, 195, 196], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[173, 174], [173, 177], [194, -153], [194, 195]], "missing_branches": []}, "test_funding_corporate_action_status_and_payload_branches": {"executed_lines": [200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[200, 201], [200, 208], [229, 230], [229, 232]], "missing_branches": []}, "instrument_spec": {"executed_lines": [244, 267, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_reference_contract_negative_branches_and_serializers": {"executed_lines": [272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 42, 56, 110, 127, 143, 153, 199, 243, 271], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}}}, "tests\\test_v2_contracts.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": [], "functions": {"fp": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_fixed_point_is_exact_and_utc_is_strict": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_instrument_spec_matches_json_and_arrow_contracts": {"executed_lines": [91, 109, 110, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "test_market_clock_uses_explicit_trading_day": {"executed_lines": [117, 127, 128, 129, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "test_trade_and_quote_events_enforce_causal_time": {"executed_lines": [134, 140, 141, 148, 149, 150, 151, 152], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_l2_snapshot_and_delta_are_strictly_sequenced": {"executed_lines": [160, 165, 166, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [], "missing_branches": []}, "test_public_json_validation_enforces_event_semantics": {"executed_lines": [187, 193, 194, 195, 196, 197, 199, 200, 201, 202], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [], "missing_branches": []}, "test_public_stream_validation_rejects_duplicate_and_out_of_order_records": {"executed_lines": [206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "test_stream_validation_connects_l2_snapshot_to_first_delta": {"executed_lines": [242, 249, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_reference_json_validation_matches_dataclass_semantics": {"executed_lines": [266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "test_all_event_arrow_schemas_require_sequence_and_l2_lists_require_items": {"executed_lines": [286, 297, 298, 299, 300], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[286, 297], [286, 298]], "missing_branches": []}, "test_asset_specific_events_match_registered_schemas": {"executed_lines": [304, 310, 311, 318, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[318, -303], [318, 323]], "missing_branches": []}, "test_bitemporal_join_never_uses_future_knowledge": {"executed_lines": [327, 334, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_all_frozen_v2_golden_records_match_json_and_arrow_field_contracts": {"executed_lines": [350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [[367, -349], [367, 368]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 63, 77, 90, 116, 133, 159, 186, 205, 241, 265, 285, 303, 326, 349], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": []}}}, "tools\\benchmark_capture_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 91, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170, 171, 172, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 197, 219, 220, 223, 228, 233, 234, 235, 238, 240, 241, 242, 243, 244, 245, 246, 247, 259, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 201, "num_statements": 324, "percent_covered": 62.121212121212125, "percent_covered_display": "62", "missing_lines": 123, "excluded_lines": 0, "percent_statements_covered": 62.03703703703704, "percent_statements_covered_display": "62", "num_branches": 72, "num_partial_branches": 9, "covered_branches": 45, "missing_branches": 27, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131, 173, 194, 221, 224, 225, 226, 229, 230, 269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286, 296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308, 443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139], [149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174], [186, -185], [241, 242], [241, 243], [312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123], [172, 173], [186, 194], [278, 279], [278, 280], [281, 282], [281, 283], [302, 303], [302, 304], [364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]], "functions": {"ProviderBatchingExecutor.__init__": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "ProviderBatchingExecutor.submit": {"executed_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [88], "excluded_lines": [], "start_line": 73, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89]], "missing_branches": [[82, 87], [87, 88]]}, "ProviderBatchingExecutor._flush_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [92, 93, 94], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": [[93, -91], [93, 94]]}, "ProviderBatchingExecutor._launch_locked": {"executed_lines": [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 121], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [[99, 100], [99, 101], [101, 102], [101, 103]], "missing_branches": []}, "ProviderBatchingExecutor._launch_locked.complete": {"executed_lines": [109, 110, 111, 112, 114, 115, 116, 117, 118, 119], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [113], "excluded_lines": [], "start_line": 108, "executed_branches": [[112, 118], [115, 116], [115, 117], [118, -108], [118, 119]], "missing_branches": [[112, 113]]}, "ProviderBatchingExecutor.shutdown": {"executed_lines": [124, 125, 126, 127, 128, 129, 132, 133, 134], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [130, 131], "excluded_lines": [], "start_line": 123, "executed_branches": [[126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134]], "missing_branches": [[129, 130], [130, 131], [130, 132], [132, -123]]}, "ProviderBatchingExecutor.assert_quiescent": {"executed_lines": [137, 138, 139], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[138, -136], [138, 139]], "missing_branches": []}, "BenchmarkTiming.mark_workload_completed": {"executed_lines": [149, 150, 151], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[149, 150], [149, 151]], "missing_branches": []}, "BenchmarkTiming.mark_pool_closed": {"executed_lines": [154, 155, 156], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[154, 155], [154, 156]], "missing_branches": []}, "BenchmarkTiming.workload_seconds": {"executed_lines": [160, 161, 162], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [[160, 161], [160, 162]], "missing_branches": []}, "BenchmarkTiming.worker_teardown_seconds": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[166, 167], [166, 168]], "missing_branches": []}, "BenchmarkTiming.total_wall_seconds": {"executed_lines": [172, 174], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [173], "excluded_lines": [], "start_line": 171, "executed_branches": [[172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario.__post_init__": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [224, 225, 226], "excluded_lines": [], "start_line": 223, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230], "excluded_lines": [], "start_line": 228, "executed_branches": [], "missing_branches": []}, "FixtureHttp.__init__": {"executed_lines": [235, 238], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [], "missing_branches": []}, "FixtureHttp.get": {"executed_lines": [241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [269, 270, 271, 272], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "FixtureConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [275], "excluded_lines": [], "start_line": 274, "executed_branches": [], "missing_branches": []}, "FixtureConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [278, 279, 280, 281, 282, 283], "excluded_lines": [], "start_line": 277, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [286], "excluded_lines": [], "start_line": 285, "executed_branches": [], "missing_branches": []}, "FixtureConnector.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [296, 297, 298, 299], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "FixtureConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "_book_levels": {"executed_lines": [312, 313, 314, 315, 316], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311, "executed_branches": [[312, 313], [312, 314]], "missing_branches": []}, "_update_levels": {"executed_lines": [329, 330, 331, 332], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[330, 331], [330, 332]], "missing_branches": []}, "_messages": {"executed_lines": [338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432]], "missing_branches": [[364, 366]]}, "_expected_normalized_rows": {"executed_lines": [436, 437, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435, "executed_branches": [], "missing_branches": []}, "_percentile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [443, 444, 445, 446, 447], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": [[443, 444], [443, 445]]}, "_event_loop_sampler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [451, 452, 453, 454, 455, 456, 457], "excluded_lines": [], "start_line": 450, "executed_branches": [], "missing_branches": [[453, -450], [453, 454]]}, "_git_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [461, 468, 477], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "_run_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [485, 486, 487, 488, 489, 494, 495, 496, 502, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": [[494, 495], [494, 496]]}, "_run_benchmark.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [503], "excluded_lines": [], "start_line": 502, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": [[699, 700], [699, 701]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 322, 335, 435, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 89, "num_statements": 90, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.88888888888889, "percent_statements_covered_display": "99", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [718], "excluded_lines": [], "start_line": 1, "executed_branches": [[717, -1]], "missing_branches": [[717, 718]]}}, "classes": {"ProviderBatchingExecutor": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 124, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 139], "summary": {"covered_lines": 58, "num_statements": 65, "percent_covered": 83.15789473684211, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 89.23076923076923, "percent_statements_covered_display": "89", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 9, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123]]}, "BenchmarkTiming": {"executed_lines": [149, 150, 151, 154, 155, 156, 160, 161, 162, 166, 167, 168, 172, 174], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [173], "excluded_lines": [], "start_line": 143, "executed_branches": [[149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 178, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221, 224, 225, 226, 229, 230], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "FixtureHttp": {"executed_lines": [235, 238, 241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 118, "num_statements": 203, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 58.12807881773399, "percent_statements_covered_display": "58", "num_branches": 22, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "55"}, "missing_lines": [443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "start_line": 1, "executed_branches": [[312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]]}}}, "tools\\benchmark_normalized_l2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 164, "num_statements": 215, "percent_covered": 73.51778656126483, "percent_covered_display": "74", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 76.27906976744185, "percent_statements_covered_display": "76", "num_branches": 38, "num_partial_branches": 10, "covered_branches": 22, "missing_branches": 16, "percent_branches_covered": 57.89473684210526, "percent_branches_covered_display": "58"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [187, -186], [187, 188], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]], "functions": {"synthetic_l2_events": {"executed_lines": [57, 59, 85, 86], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [58], "excluded_lines": [], "start_line": 55, "executed_branches": [[57, 59], [85, -55], [85, 86]], "missing_branches": [[57, 58]]}, "_repeat": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "synthetic_l2_batches": {"executed_lines": [111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [112, 114], "excluded_lines": [], "start_line": 109, "executed_branches": [[111, 113], [113, 115], [128, -109], [128, 129]], "missing_branches": [[111, 112], [113, 114]]}, "_PeakRssSampler.__init__": {"executed_lines": [180, 181, 182, 183, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler._sample": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "_PeakRssSampler.__enter__": {"executed_lines": [191, 192], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler.__exit__": {"executed_lines": [195, 196, 197], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "_profile_storage_stages": {"executed_lines": [202, 217, 222, 225, 229, 231, 232, 243, 244, 245, 247, 248], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[229, 231], [229, 244], [247, -200], [247, 248]], "missing_branches": []}, "_profile_storage_stages.measured": {"executed_lines": [235, 236, 237, 239, 240, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232, "executed_branches": [], "missing_branches": []}, "_git_identity": {"executed_lines": [252, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "_git_identity.git": {"executed_lines": [253, 260], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252, "executed_branches": [], "missing_branches": []}, "_tree_bytes": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_disk_roots": {"executed_lines": [274, 280, 281, 282, 284, 285, 286], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [283], "excluded_lines": [], "start_line": 273, "executed_branches": [[281, 282], [281, 286], [282, 284]], "missing_branches": [[282, 283]]}, "_disk_usage": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "_run_once_independent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [308, 309, 329, 330, 331, 335, 336, 337], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[330, 331], [330, 335]]}, "_run_once": {"executed_lines": [347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [369, 389], "excluded_lines": [], "start_line": 340, "executed_branches": [[368, 370], [388, 390]], "missing_branches": [[368, 369], [388, 389]]}, "run_benchmark": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 5, "percent_branches_covered": 37.5, "percent_branches_covered_display": "38"}, "missing_lines": [428, 430, 467, 468, 469, 470, 471], "excluded_lines": [], "start_line": 414, "executed_branches": [[427, 429], [429, 431], [466, 472]], "missing_branches": [[427, 428], [429, 430], [466, 467], [468, 469], [468, 470]]}, "_parser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": [[565, 566], [565, 576]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 105, 109, 178, 179, 186, 190, 194, 200, 201, 251, 269, 273, 289, 301, 340, 414, 534, 557, 596], "summary": {"covered_lines": 57, "num_statements": 58, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.27586206896552, "percent_statements_covered_display": "98", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [597], "excluded_lines": [], "start_line": 1, "executed_branches": [[596, -1]], "missing_branches": [[596, 597]]}}, "classes": {"_PeakRssSampler": {"executed_lines": [180, 181, 182, 183, 184, 187, 188, 191, 192, 195, 196, 197], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 186, 190, 194, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 152, "num_statements": 203, "percent_covered": 71.96652719665272, "percent_covered_display": "72", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 74.8768472906404, "percent_statements_covered_display": "75", "num_branches": 36, "num_partial_branches": 10, "covered_branches": 20, "missing_branches": 16, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "start_line": 1, "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]]}}}}, "totals": {"covered_lines": 12221, "num_statements": 13037, "percent_covered": 92.45786963434023, "percent_covered_display": "92", "missing_lines": 816, "excluded_lines": 34, "percent_statements_covered": 93.74089130935032, "percent_statements_covered_display": "94", "num_branches": 2688, "num_partial_branches": 232, "covered_branches": 2318, "missing_branches": 370, "percent_branches_covered": 86.23511904761905, "percent_branches_covered_display": "86"}} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/full-pytest-junit-sha256-d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7.xml b/validation/m7-capture-remediation-v2/artifacts/full-pytest-junit-sha256-d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7.xml new file mode 100644 index 0000000..ed38482 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/full-pytest-junit-sha256-d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7.xml @@ -0,0 +1 @@ +H:\Documents\ChatGPT\temp\puresaber-quant-platform\.worktrees\quant-data-kit-m7\tests\test_m2_audit_regressions.py:209: POSIX symbolic-link regression \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/sparse-round-01-sha256-00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954.json b/validation/m7-capture-remediation-v2/artifacts/sparse-round-01-sha256-00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954.json new file mode 100644 index 0000000..72281ef --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/sparse-round-01-sha256-00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.567075159580975,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.567075159580975},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T10:36:41.122102Z","report_sha256":"e090141475b99d891c59104e0594242db1dfca853e6082249e76f8d9669b6a0e","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.607572799999616,"event_loop_delay_p95_milliseconds":15.028199999505887,"event_loop_delay_p99_milliseconds":17.924899999343324,"event_loop_delay_samples":432,"last_epoch_submit_seconds":4.182859500000632,"normalization_group_window_seconds":2.3991511999993236,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1209.521293507423,"throughput_websocket_messages_per_second":605.366012766478,"total_wall_seconds":6.660637000000861,"worker_teardown_seconds":0.0530642000012449,"workload_elapsed_seconds":6.607572799999616},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/sparse-round-02-sha256-fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481.json b/validation/m7-capture-remediation-v2/artifacts/sparse-round-02-sha256-fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481.json new file mode 100644 index 0000000..2f1892a --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/sparse-round-02-sha256-fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.833495726922286,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.833495726922285},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T10:36:48.529556Z","report_sha256":"ef2ee27bb138b90d71142e97da4e2fd5e71152b39ed95a4856daccea6201f173","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.382846399999835,"event_loop_delay_p95_milliseconds":15.000400000644731,"event_loop_delay_p99_milliseconds":15.538600000581937,"event_loop_delay_samples":426,"last_epoch_submit_seconds":4.044937299999219,"normalization_group_window_seconds":2.309778400000141,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1252.1059569912582,"throughput_websocket_messages_per_second":626.6796581537828,"total_wall_seconds":6.437329000000318,"worker_teardown_seconds":0.05448260000048322,"workload_elapsed_seconds":6.382846399999835},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/artifacts/sparse-round-03-sha256-917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json b/validation/m7-capture-remediation-v2/artifacts/sparse-round-03-sha256-917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json new file mode 100644 index 0000000..b88a297 --- /dev/null +++ b/validation/m7-capture-remediation-v2/artifacts/sparse-round-03-sha256-917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json @@ -0,0 +1 @@ +{"collector_commit":"a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.862237497184989,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.862237497184988},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T10:36:55.906252Z","report_sha256":"a3c4a13f707dc94dec4198b9186fe86344d65ef1fa9411a2e9aade035abc09ea","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.359512800001539,"event_loop_delay_p95_milliseconds":15.02739999887126,"event_loop_delay_p99_milliseconds":15.592499999911524,"event_loop_delay_samples":425,"last_epoch_submit_seconds":4.035871699999916,"normalization_group_window_seconds":2.2961773999995785,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1256.7000415500486,"throughput_websocket_messages_per_second":628.978999774799,"total_wall_seconds":6.419308500000625,"worker_teardown_seconds":0.05979569999908563,"workload_elapsed_seconds":6.359512800001539},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v2/evidence-manifest.json b/validation/m7-capture-remediation-v2/evidence-manifest.json new file mode 100644 index 0000000..b5a59a6 --- /dev/null +++ b/validation/m7-capture-remediation-v2/evidence-manifest.json @@ -0,0 +1,81 @@ +{ + "schema_version": "puresaber.m7-capture-core-remediation-evidence@2.0.0", + "source_commit": "a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c", + "source_working_tree_dirty": false, + "package_version": "0.7.1", + "certification": { + "software_fixture": "PASS_PENDING_INDEPENDENT_VALIDATION", + "performance": "PASS_PENDING_INDEPENDENT_VALIDATION", + "public_network": "NOT_RUN", + "continuous_days": 0, + "market_data_certified": false + }, + "artifacts": [ + { + "label": "dense-round-01", + "path": "artifacts/dense-round-01-sha256-574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7.json", + "sha256": "574c03c09c86751fe383b97105c8807a23269e634320b1eeec3f5f451907e1b7", + "bytes": 4581 + }, + { + "label": "dense-round-02", + "path": "artifacts/dense-round-02-sha256-14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e.json", + "sha256": "14774e80b042a4909695a4d25a15255ef202915befa63c34836cefebf4ca171e", + "bytes": 4579 + }, + { + "label": "dense-round-03", + "path": "artifacts/dense-round-03-sha256-737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a.json", + "sha256": "737ccd9b17207b90ea98fbc8e91292e7dcefde45ffb4d60e3cfdaa6411e4c59a", + "bytes": 4584 + }, + { + "label": "sparse-round-01", + "path": "artifacts/sparse-round-01-sha256-00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954.json", + "sha256": "00f1aea7fb6e0fcb40dc97200e2d8b46d01e2612428bbca3f7ba1c5324355954", + "bytes": 4406 + }, + { + "label": "sparse-round-02", + "path": "artifacts/sparse-round-02-sha256-fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481.json", + "sha256": "fec8522d1cbb5c0ca4af930ceb982ea6d3c0366bbbdedcfc5932c42d8bff2481", + "bytes": 4408 + }, + { + "label": "sparse-round-03", + "path": "artifacts/sparse-round-03-sha256-917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d.json", + "sha256": "917d0b3f9dc78d13c7735ca9eaf0e9c4aba8c37fe7028ef9afbb3f53a839cf6d", + "bytes": 4407 + }, + { + "label": "full-coverage", + "path": "artifacts/full-coverage-sha256-9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6.json", + "sha256": "9b489a35d455bee31134d35cfd702f4b0e69f890bf088ed115c2d2a4e742d2a6", + "bytes": 1120982 + }, + { + "label": "full-pytest-junit", + "path": "artifacts/full-pytest-junit-sha256-d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7.xml", + "sha256": "d310dd43d01e46972125d4a9e4cfb7626e8394ddf8e8425861ee9104a53528e7", + "bytes": 51130 + }, + { + "label": "data-10m-3run", + "path": "artifacts/data-10m-3run-sha256-0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b.json", + "sha256": "0ac53846ebe895382a5cc246df1586f906e34cef611d28ad5301629d7305903b", + "bytes": 24509 + }, + { + "label": "capacity-preflight-refusal", + "path": "artifacts/capacity-preflight-refusal-sha256-a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee.json", + "sha256": "a9f126306738036d79c7c2564006f4af4fc1c2d6224296cb98f2d914e64a25ee", + "bytes": 6583 + }, + { + "label": "capacity-run-refusal", + "path": "artifacts/capacity-run-refusal-sha256-f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc.json", + "sha256": "f1929a03c857ddcd2205d0f2d5f8bbadcc6a85aa1a6d9d52b5274f0048a431fc", + "bytes": 6583 + } + ] +} diff --git a/validation/m7-capture-remediation-v2/summary.md b/validation/m7-capture-remediation-v2/summary.md new file mode 100644 index 0000000..cd2286e --- /dev/null +++ b/validation/m7-capture-remediation-v2/summary.md @@ -0,0 +1,95 @@ +# M7 capture core remediation candidate evidence + +## Decision boundary + +- Source commit:`a11a0c2c7fe50f4e0cb7d2bcc0a8466d4a11d21c`, clean working tree. +- Branch:`codex/cross-asset-v2-m7-data-performance`; PR`PureSaber/quant-data-kit#6` + remains open and unmerged. +- Software, deterministic fixture and local performance gates pass pending independent read-only + validation. +- Public Binance/OKX network capture was not run. Continuous days remain0 and + `market_data_certified=false`. +- No API key, account endpoint, order route, live order or destructive cleanup was used. + +## Remediated invariants + +The candidate makes Raw audit durability precede state publication, persists honest preflight and +terminal outcomes, fails the aggregate run if any stream fails, cancels and drains peer tasks, +publishes or aborts Normalized epochs transactionally, rejects cross-process path replacement and +reparse/junction targets, freezes the exact eight-stream identity, and enforces a bounded +coordination budget. Dense same-sequence multi-level L2 updates are now applied atomically with one +post-group book validity check and complete rollback on failure. + +## Quality gates + +Environment: isolated`.venv-m7-verify`, Python3.12.5, package0.7.1, +`requirements.lock`SHA-256 +`fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88`. + +| Gate | Result | +|---|---| +| Isolated`pip check` | PASS; no broken requirements | +|`ruff check .` | PASS | +|`ruff format --check .` | PASS;86 files unchanged | +| Full pytest | PASS;356 tests,0 failures,0 errors,1 existing Windows/POSIX skip | +| Full source pure branch coverage | PASS;2035/2342=86.89%, required>=80% | +| Every configured core module | PASS;>=90% pure branch coverage | +|`normalized_v3.py` |498/548=90.88% | +|`l2_replay.py` |103/106=97.17% | +|`adapters_v2/base.py` |30/32=93.75% | + +## Deterministic eight-stream capture benchmarks + +Both fixture scenarios include exact Raw frames, Raw segment publication, Normalized publication, +archive copy, restore hash verification and complete worker shutdown. Each run reports source +commit`a11a0c2...`, `working_tree_dirty=false`, consistency true and gate true. + +| Scenario | Rounds | Messages/round | Normalized rows/round | Messages/s | Rows/s | p99 | +|---|---:|---:|---:|---:|---:|---:| +| Dense20+20 levels/update |3 |8,000 |319,688 |263.83/273.02/293.09 |10,542.72/10,909.99/11,712.10 |46.01/47.88/42.19ms | +| Sparse1+1 level/update |3 |4,000 |7,992 |605.37/626.68/628.98 |1,209.52/1,252.11/1,256.70 |17.92/15.54/15.59ms | + +The dense gate requires at least240messages/s, scenario-density rows at3x the frozen80messages/s +live offer rate, and p99 at most100ms. All three dense rounds pass. A prior smaller dense500 +diagnostic included one237.52messages/s result; it is retained outside this candidate set and is not +silently promoted to passing evidence. + +## Three independent10-million-event runs + +All runs use the exact candidate source in clean state, execute in independent processes, accept +all10,000,000 valid events, quarantine0, pass strict reload, and retain3,310,487,778bytes without +cleanup. + +| Run | Events/s | Peak RSS | Result | +|---:|---:|---:|---| +|1 |117,722.24 |3.092GiB | PASS | +|2 |186,347.92 |3.116GiB | PASS | +|3 |195,061.58 |3.110GiB | PASS | + +The deterministic snapshot, manifest and final L2 checkpoint hashes match across all three runs. +The first run has only17.7% throughput headroom over the100,000events/s gate and remains a visible +performance risk rather than a hidden exception. + +## Capacity refusal + +The exact candidate was invoked in both safe`preflight`mode and explicit`run +--confirm-long-running`mode. Both returned exit code2 and immutable +`PAUSED_PREFLIGHT_FAILED`reports before network startup because the archive projection after the +150GiB reserve was66,346,708,992bytes, below the199,710,735,564-byte safety floor. All eight +streams report0WebSocket messages and`long_running_capture_started=false`. + +## Remaining certification risks + +- Public Binance/OKX TLS, snapshot bridge, reconnect/resync and real-message data quality remain + unverified by this candidate evidence. +- Current archive capacity cannot support the required retained30-day eight-stream run; fail-closed + behavior is correct, but the external storage blocker remains. +- No30-day continuous retained data or cross-source real-market quality report exists yet. +- Domestic L2 still requires legally authorized market data and remains fixture-certified only. +- A rejected rolling-epoch experiment showed claim/lock growth and was fully reverted before the + candidate commit. The retained diagnostics are not part of the passing artifact set. +- GitHub Python3.10/3.11/3.12 CI and independent read-only validation are still required before the + software/fixture status can be promoted from pending. + +All evidence files are content-addressed and enumerated in`evidence-manifest.json`. Existing +`validation/m7-capture`and historical performance evidence were not rewritten. diff --git a/validation/m7-capture-remediation-v2/technical-handoff.md b/validation/m7-capture-remediation-v2/technical-handoff.md new file mode 100644 index 0000000..1f160b1 --- /dev/null +++ b/validation/m7-capture-remediation-v2/technical-handoff.md @@ -0,0 +1,60 @@ +# M7 capture remediation technical handoff + +## 1. Scope and acceptance conditions + +Scope is the fail-closed public Crypto L2 collector, its immutable Raw/Normalized/archive path, +atomic dense L2 admission and the impacted Normalized performance gate. Acceptance requires all +identified durability, concurrency, path-safety and aggregate-failure invariants to be tested; +three deterministic dense and sparse eight-stream fixture runs; full quality and branch gates; and +three independent retained10-million-event Normalized runs on one clean source commit. + +It explicitly excludes real orders, authenticated APIs,30-day live capture, domestic market-data +certification and any claim of GA readiness. + +## 2. Modified files + +The remediation commit series`6078f6f..a11a0c2`changes: + +- Capture core:`src/quant_data_kit/capture_v2/{cli,collector,epoch,models,storage}.py`and exports. +- Dense atomic admission:`src/quant_data_kit/adapters_v2/base.py`, + `src/quant_data_kit/l2_replay.py`, `src/quant_data_kit/normalized_v3.py`. +- Benchmark:`tools/benchmark_capture_v2.py`. +- Tests:`tests/test_benchmark_capture_v2.py`, capture core/remediation tests, + `tests/test_l2_replay.py`, `tests/test_normalized_v3.py`, + `tests/test_normalized_v3_failures.py`and the impacted integration test. +- Documentation/version:`docs/m7-crypto-l2-capture.md`, + `src/quant_data_kit/_version.py`. + +This evidence commit only adds`validation/m7-capture-remediation-v2`; it does not rewrite old +evidence. Rollback is a Git revert of the remediation commits; no data migration or tag movement is +required. + +## 3. Test commands and evidence + +Executed commands include: + +```text +.venv-m7-verify/Scripts/python -m pip check +python -m ruff check . +python -m ruff format --check . +python tools/check_branch_coverage.py +python tools/benchmark_capture_v2.py --scenario dense-burst --messages-per-stream 1000 ... +python tools/benchmark_capture_v2.py --scenario sparse --messages-per-stream 500 ... +python -m quant_data_kit.capture_v2.cli --mode preflight +python -m quant_data_kit.capture_v2.cli --mode run --confirm-long-running +``` + +The full pytest/coverage and3x10M benchmark commands are captured by their immutable reports. Exact +results, hashes and artifact locations are in`summary.md`and`evidence-manifest.json`. + +## 4. Remaining risks and dependencies + +- Provision an independent archive target that preserves the150GiB reserve while staying above the + 20%/100GiB floor, then repeat preflight before any bounded public probe. +- Confirm public Binance/OKX TLS access on the capture host, then run bounded real-message probes. +- Complete retained30-day capture, restore drill and cross-source quality review. +- Obtain legally authorized domestic L2 before real-market certification. +- The first10M run has17.7% throughput headroom; monitor performance regression against this floor. +- The original delegated technical-lead task handle became unavailable after a host refresh. The + project lead therefore re-ran and packaged the actual source-dependent evidence above; no missing + subagent narrative is treated as acceptance evidence. From a4a5a16542a2c4c74edf8205b982c681248517a3 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 19:34:34 +0800 Subject: [PATCH 11/16] fix: reconcile normalized epoch transactions --- README.md | 2 +- docs/m7-crypto-l2-capture.md | 14 +- src/quant_data_kit/_version.py | 2 +- src/quant_data_kit/capture_v2/collector.py | 23 + src/quant_data_kit/capture_v2/epoch.py | 552 +++++++++++++++++--- src/quant_data_kit/capture_v2/storage.py | 4 +- tests/test_benchmark_capture_v2.py | 8 +- tests/test_capture_v2_remediation.py | 567 ++++++++++++++++++++- tests/test_m2_integration.py | 2 +- 9 files changed, 1071 insertions(+), 103 deletions(-) diff --git a/README.md b/README.md index 8725800..52df0e3 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ safe CLI modes and non-certification boundary are documented in ## M2 data-lake guarantees - Raw persists exact provider bytes through lake-local staging and atomic rename. Its integrity anchor binds source, request, UTC collection time, object/key path identity, SHA-256 and the30-day retention policy. A crash-released process lock and immutable key claim make concurrent writes, crash recovery and cleanup serialize on the same idempotency key. Every write, read and cleanup rejects path escapes and Windows reparse points below the lake root. -- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. +- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. Capture epochs persist`PREPARED`before snapshot publication and finish as`COMMITTED`or`ABORTED`; startup reconciles unresolved transactions before opening network connections. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. - The certified Curated entry is`curate_trade_bars_from_snapshot`: it reads trades from one explicit verified Normalized snapshot, constructs session-aware bars and binds the exact lineage. One`dataset+revision_id`maps to one snapshot; corrected data requires a new revision and never overwrites history. - Normalized and Curated snapshot identities bind Arrow-canonical logical rows and physical Parquet hashes. DuckDB verifies the fixed snapshot, copies Arrow data into in-memory tables, then disables external access; user SQL cannot call file readers or resolve`latest`/`main`. - Collection stops with a visible`COLLECTION_STOPPED`error if hot data would exceed150GB or free space would fall below`max(volume*20%,100GB)`. diff --git a/docs/m7-crypto-l2-capture.md b/docs/m7-crypto-l2-capture.md index f16dbbe..11b0879 100644 --- a/docs/m7-crypto-l2-capture.md +++ b/docs/m7-crypto-l2-capture.md @@ -52,17 +52,21 @@ collector commit and previous-segment lineage. A segment is never one file per n an existing immutable path cannot be overwritten with different bytes. Admitted snapshots and deltas are spooled in bounded Normalized epochs. Publication uses the -existing`write_normalized_events`path, PIT checks, schemas, quarantine rules and Raw references. -Gaps or connection failures abort the current epoch visibly before resynchronization. Finalization -retains the journal until both Normalized publication and an immutable receipt succeed; failed -publish/receipt attempts produce content-addressed failure records and remain retryable. +existing strict Arrow-batch path, PIT checks, schemas, quarantine rules and Raw references. Every +finalize attempt persists an immutable`PREPARED`transaction before publishing a visible snapshot, +then ends in a content-addressed`COMMITTED`receipt or`ABORTED`failure. Before any network startup, +the coordinator scans all journal parents, validates every transaction and path, and idempotently +replays unresolved`PREPARED`or retryable`ABORTED`transactions. A process termination after snapshot +publication but before receipt publication therefore cannot leave an unaudited snapshot. Gaps or +connection failures explicitly abort the current epoch before resynchronization. ## Capacity and independent archive controls `hot_root`、`archive_root`and`restore_root`must be explicit absolute existing directories. The hot and archive roots are resolved through an injectable physical-volume probe; different path strings on the same physical device fail preflight. All three roots and each final parent reject symbolic -links、Windows junctions/reparse points and resolved escapes. Collection takes an exact startup +links、Windows junctions/reparse points and resolved escapes. This applies to journal creation, +parts, transaction recovery, receipts and abort records as well as Raw/archive paths. Collection takes an exact startup baseline, reserves every projected write under a thread-safe incremental counter, and repeats real tree/capacity probes at bounded message、byte or monotonic-time intervals. It pauses if projected hot data exceeds150GiB or if free space falls below diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py index 347256b..f782dab 100644 --- a/src/quant_data_kit/_version.py +++ b/src/quant_data_kit/_version.py @@ -1,3 +1,3 @@ """Single authoritative package version used by builds and runtime imports.""" -__version__ = "0.7.1" +__version__ = "0.7.2" diff --git a/src/quant_data_kit/capture_v2/collector.py b/src/quant_data_kit/capture_v2/collector.py index 2115b76..91b727e 100644 --- a/src/quant_data_kit/capture_v2/collector.py +++ b/src/quant_data_kit/capture_v2/collector.py @@ -706,6 +706,29 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo status="PAUSED_PREFLIGHT_FAILED", long_running_capture_started=False, ) + try: + reconciled = NormalizedEpochJournal.reconcile_pending( + self.config.hot_root, + storage_guard=self.storage_guard, + policy=self.policy, + normalization_executor=self.normalization_executor, + ) + except Exception as exc: # noqa: BLE001 - unresolved publication blocks every stream + error = f"{type(exc).__name__}: {exc}" + self.alert_sink(f"CAPTURE_PAUSED:EPOCH_RECOVERY_FAILED:{error}") + reports = tuple( + self._empty_stream_report(stream, errors=(error,)) for stream in self.config.streams + ) + return self._write_report( + run_id, + started, + reports, + preflight=preflight, + status="CAPTURE_FAILED", + long_running_capture_started=False, + ) + if reconciled: + self.alert_sink(f"CAPTURE_EPOCH_RECOVERY_COMMITTED:{len(reconciled)}") runners: list[CaptureStreamRunner] = [] try: for stream in self.config.streams: diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py index 0b63397..e2ae06c 100644 --- a/src/quant_data_kit/capture_v2/epoch.py +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -22,6 +22,9 @@ CaptureStorageGuard, RawSegment, _atomic_immutable_write, + _fsync_directory, + _safe_mkdir, + _validate_safe_path, ) from quant_data_kit.data_lake import ( RawObjectReference, @@ -67,6 +70,8 @@ class NormalizedEpochReceipt: normalized_snapshot_id: str | None accepted_rows: int quarantined_rows: int + transaction_state: str + prepared_sha256: str receipt_sha256: str receipt_path: str @@ -78,7 +83,9 @@ class _NormalizationSummary: quarantined_rows: int -def _sha256_file(path: Path) -> str: +def _sha256_file(path: Path, *, trusted_root: Path | None = None) -> str: + if trusted_root is not None: + path = _validate_safe_path(trusted_root, path, allow_missing=False) digest = hashlib.sha256() with path.open("rb") as stream: for chunk in iter(lambda: stream.read(1024 * 1024), b""): @@ -86,6 +93,58 @@ def _sha256_file(path: Path) -> str: return digest.hexdigest() +def _journal_root(hot_root: Path, stream_id: str, epoch_id: str) -> Path: + return ( + Path(hot_root) + / "capture" + / "normalized-epoch-journal" + / f"stream={stream_id}" + / f"epoch={epoch_id}" + ) + + +def _validated_glob(hot_root: Path, root: Path, pattern: str) -> tuple[Path, ...]: + checked_root = _validate_safe_path(hot_root, root, allow_missing=False) + paths = tuple(sorted(checked_root.glob(pattern))) + return tuple(_validate_safe_path(hot_root, path, allow_missing=False) for path in paths) + + +def _load_hashed_json( + hot_root: Path, + path: Path, + *, + hash_field: str, + description: str, +) -> dict[str, Any]: + checked = _validate_safe_path(hot_root, path, allow_missing=False) + try: + payload = json.loads(checked.read_text(encoding="utf-8")) + except (OSError, UnicodeError, json.JSONDecodeError) as exc: + raise ValidationError(f"{description} is unreadable: {checked}") from exc + if not isinstance(payload, dict): + raise ValidationError(f"{description} must be a JSON object") + digest = payload.pop(hash_field, None) + if digest != hashlib.sha256(canonical_json_bytes(payload)).hexdigest(): + raise ValidationError(f"{description} hash changed") + if f"sha256-{digest}" not in checked.name: + raise ValidationError(f"{description} filename hash changed") + payload[hash_field] = digest + return payload + + +def _open_journal_file(hot_root: Path, path: Path, mode: str): + allow_missing = "x" in mode + checked = _validate_safe_path(hot_root, path, allow_missing=allow_missing) + _validate_safe_path(hot_root, checked.parent, allow_missing=False) + stream = checked.open(mode) + try: + _validate_safe_path(hot_root, checked, allow_missing=False) + except Exception: + stream.close() + raise + return stream + + class NormalizedEpochJournal: """Spool live v2 records with bounded memory, then publish one replay-complete epoch.""" @@ -123,16 +182,10 @@ def __init__( self.flush_seconds = flush_seconds self.monotonic = monotonic self.normalization_executor = normalization_executor - self.root = ( - self.hot_root - / "capture" - / "normalized-epoch-journal" - / f"stream={stream_id}" - / f"epoch={epoch_id}" - ) - self.root.mkdir(parents=True, exist_ok=False) + self.root = _journal_root(self.hot_root, stream_id, epoch_id) + _safe_mkdir(self.hot_root, self.root, exist_ok=False) self._open_path = self.root / "part-open.ndjson" - self._open_stream = self._open_path.open("xb") + self._open_stream = _open_journal_file(self.hot_root, self._open_path, "xb") self._open_rows = 0 self._unflushed_rows = 0 self._unflushed_bytes = 0 @@ -143,6 +196,8 @@ def __init__( self._raw_manifest_hashes: set[str] = set() self._state = "OPEN" self._finalize_failures = 0 + self._finalize_attempts = 0 + self._prepared_transaction: dict[str, Any] | None = None def append(self, records: Iterable[Mapping[str, Any]]) -> None: self._require_open() @@ -228,26 +283,131 @@ def recover( monotonic: Callable[[], float] = time.monotonic, normalization_executor: Executor | None = None, ) -> NormalizedEpochJournal: - """Reload a retryable failed finalize while preserving journal and Raw lineage.""" - - root = ( - Path(hot_root) - / "capture" - / "normalized-epoch-journal" - / f"stream={stream_id}" - / f"epoch={epoch_id}" + """Reload a pending PREPARED or retryable ABORTED transaction.""" + + hot_root = Path(hot_root) + root = _journal_root(hot_root, stream_id, epoch_id) + _validate_safe_path(hot_root, root, allow_missing=True) + if not root.exists(): + raise ValidationError("Normalized epoch is not a retryable failed finalize") + _validate_safe_path(hot_root, root, allow_missing=False) + receipts = _validated_glob(hot_root, root, "receipt-sha256-*.json") + explicit_aborts = _validated_glob(hot_root, root, "aborted-sha256-*.json") + failures = _validated_glob(hot_root, root, "finalize-failure-*.json") + prepared_paths = _validated_glob(hot_root, root, "transaction-prepared-*.json") + prepared_payloads = tuple( + _load_hashed_json( + hot_root, + path, + hash_field="prepared_sha256", + description="Normalized epoch PREPARED transaction", + ) + for path in prepared_paths ) - failures = sorted(root.glob("finalize-failure-*.json")) - if not failures or tuple(root.glob("receipt-sha256-*.json")): + for item in prepared_payloads: + if ( + item.get("transaction_state") != "PREPARED" + or item.get("epoch_id") != epoch_id + or item.get("stream_id") != stream_id + or item.get("provider") != provider + or item.get("venue") != venue + or item.get("policy") != asdict(policy) + or int(item.get("attempt", 0)) < 1 + ): + raise ValidationError("Normalized epoch PREPARED transaction identity changed") + prepared_by_hash = {str(item["prepared_sha256"]): item for item in prepared_payloads} + receipt_payloads = tuple( + _load_hashed_json( + hot_root, + path, + hash_field="receipt_sha256", + description="Normalized epoch receipt", + ) + for path in receipts + ) + for item in receipt_payloads: + if ( + item.get("transaction_state") != "COMMITTED" + or item.get("epoch_id") != epoch_id + or item.get("stream_id") != stream_id + or str(item.get("prepared_sha256")) not in prepared_by_hash + ): + raise ValidationError("Normalized epoch COMMITTED receipt identity changed") + abort_payloads = tuple( + _load_hashed_json( + hot_root, + path, + hash_field="abort_sha256", + description="Normalized epoch explicit ABORTED transaction", + ) + for path in explicit_aborts + ) + for item in abort_payloads: + if ( + item.get("transaction_state") != "ABORTED" + or item.get("epoch_id") != epoch_id + or item.get("stream_id") != stream_id + or ( + item.get("prepared_sha256") is not None + and str(item.get("prepared_sha256")) not in prepared_by_hash + ) + ): + raise ValidationError("Normalized epoch explicit ABORTED identity changed") + if receipts or explicit_aborts: raise ValidationError("Normalized epoch is not a retryable failed finalize") - failure = json.loads(failures[-1].read_text(encoding="utf-8")) - failure_digest = failure.pop("failure_sha256", None) - if failure_digest != hashlib.sha256(canonical_json_bytes(failure)).hexdigest(): - raise ValidationError("Normalized epoch failure record hash changed") - if failure.get("stream_id") != stream_id or not failure.get("retryable_in_process"): - raise ValidationError("Normalized epoch failure record is not recoverable") + failure_payloads = tuple( + _load_hashed_json( + hot_root, + path, + hash_field="failure_sha256", + description="Normalized epoch failure record", + ) + for path in failures + ) + for item in failure_payloads: + if item.get("stream_id") != stream_id or not item.get("retryable_in_process"): + raise ValidationError("Normalized epoch failure record is not recoverable") + prepared_sha256 = item.get("prepared_sha256") + if not prepared_sha256: + continue + referenced = prepared_by_hash.get(str(prepared_sha256)) + if referenced is None: + raise ValidationError("Normalized epoch failure transaction identity changed") + if int(item.get("records", -1)) != int(referenced.get("records", -2)): + raise ValidationError("Normalized recovery record count changed") + if item.get("raw_references", []) != referenced.get("raw_references", []): + raise ValidationError("Normalized epoch failure Raw lineage changed") + terminal_prepared = { + str(item["prepared_sha256"]) for item in failure_payloads if item.get("prepared_sha256") + } + pending = tuple( + item + for item in prepared_payloads + if str(item["prepared_sha256"]) not in terminal_prepared + ) + if len(pending) > 1: + raise ValidationError("Normalized epoch contains multiple pending transactions") + failure = None if pending else failure_payloads[-1] if failure_payloads else None + if not pending and (failure is None or not failure.get("retryable_in_process")): + raise ValidationError("Normalized epoch is not a retryable failed finalize") + transaction = ( + pending[0] if pending else prepared_payloads[-1] if prepared_payloads else None + ) + if transaction is None: + # Legacy failure records did not persist PREPARED. Preserve manual recovery support. + transaction = { + "epoch_id": epoch_id, + "stream_id": stream_id, + "provider": provider, + "venue": venue, + "records": failure.get("records", -1), + "raw_references": failure.get("raw_references", []), + "journal_parts": None, + "policy": asdict(policy), + "attempt": len(failure_payloads), + } self = cls.__new__(cls) - self.hot_root = Path(hot_root) + self.hot_root = hot_root self.epoch_id = epoch_id self.stream_id = stream_id self.provider = provider @@ -260,94 +420,282 @@ def recover( self.flush_seconds = flush_seconds self.monotonic = monotonic self.normalization_executor = normalization_executor - self.root = root + self.root = _validate_safe_path(hot_root, root, allow_missing=False) self._parts = [] self._records = 0 - for path in sorted(root.glob("part-*-sha256-*.ndjson")): - digest = _sha256_file(path) + for path in _validated_glob(hot_root, root, "part-*-sha256-*.ndjson"): + digest = _sha256_file(path, trusted_root=hot_root) if f"sha256-{digest}.ndjson" not in path.name: raise ValidationError(f"Normalized recovery part hash changed: {path}") - with path.open("rb") as stream: + with _open_journal_file(hot_root, path, "rb") as stream: rows = sum(1 for line in stream if line.strip()) self._parts.append(EpochPart(path.name, rows, digest, path.stat().st_size)) self._records += rows self._raw_references = [ - RawObjectReference(**item) for item in failure.get("raw_references", []) + RawObjectReference(**item) for item in transaction.get("raw_references", []) ] self._raw_manifest_hashes = {item.manifest_sha256 for item in self._raw_references} - if int(failure.get("records", -1)) != self._records: + if int(transaction.get("records", -1)) != self._records: raise ValidationError("Normalized recovery record count changed") + expected_parts = transaction.get("journal_parts") + if expected_parts is not None and expected_parts != [asdict(item) for item in self._parts]: + raise ValidationError("Normalized recovery journal part manifest changed") self._open_path = root / "part-open.ndjson" - if self._open_path.exists() and self._open_path.stat().st_size: + _validate_safe_path(hot_root, self._open_path, allow_missing=True) + if self._open_path.exists() and ( + _validate_safe_path(hot_root, self._open_path, allow_missing=False).stat().st_size + ): raise ValidationError("Normalized recovery found an unsealed open part") - self._open_stream = self._open_path.open("ab") + mode = "ab" if self._open_path.exists() else "xb" + self._open_stream = _open_journal_file(hot_root, self._open_path, mode) self._open_rows = 0 self._unflushed_rows = 0 self._unflushed_bytes = 0 self._last_flush = monotonic() - self._closed = False self._state = "OPEN" self._finalize_failures = len(failures) + self._finalize_attempts = max( + (int(item.get("attempt", 0)) for item in prepared_payloads), default=0 + ) + self._prepared_transaction = pending[0] if pending else None return self + @classmethod + def reconcile_pending( + cls, + hot_root: Path, + *, + storage_guard: CaptureStorageGuard, + policy: StoragePolicy = _DEFAULT_POLICY, + normalization_executor: Executor | None = None, + ) -> tuple[NormalizedEpochReceipt, ...]: + """Finish every persisted PREPARED/retryable ABORTED epoch before network startup.""" + + hot_root = Path(hot_root) + base = hot_root / "capture" / "normalized-epoch-journal" + _validate_safe_path(hot_root, base, allow_missing=True) + if not base.exists(): + return () + reconciled: list[NormalizedEpochReceipt] = [] + for stream_root in _validated_glob(hot_root, base, "stream=*"): + if not stream_root.is_dir(): + raise ValidationError("Normalized epoch stream journal is not a directory") + for epoch_root in _validated_glob(hot_root, stream_root, "epoch=*"): + if not epoch_root.is_dir(): + raise ValidationError("Normalized epoch journal is not a directory") + prepared_paths = _validated_glob( + hot_root, epoch_root, "transaction-prepared-*.json" + ) + prepared_payloads = tuple( + _load_hashed_json( + hot_root, + path, + hash_field="prepared_sha256", + description="Normalized epoch PREPARED transaction", + ) + for path in prepared_paths + ) + for item in prepared_payloads: + if ( + item.get("transaction_state") != "PREPARED" + or stream_root.name != f"stream={item.get('stream_id')}" + or epoch_root.name != f"epoch={item.get('epoch_id')}" + or item.get("policy") != asdict(policy) + ): + raise ValidationError( + "Normalized epoch PREPARED transaction identity changed" + ) + prepared_hashes = {str(item["prepared_sha256"]) for item in prepared_payloads} + receipt_paths = _validated_glob(hot_root, epoch_root, "receipt-sha256-*.json") + for path in receipt_paths: + item = _load_hashed_json( + hot_root, + path, + hash_field="receipt_sha256", + description="Normalized epoch receipt", + ) + if ( + item.get("transaction_state") != "COMMITTED" + or item.get("prepared_sha256") not in prepared_hashes + or stream_root.name != f"stream={item.get('stream_id')}" + or epoch_root.name != f"epoch={item.get('epoch_id')}" + ): + raise ValidationError("Normalized epoch COMMITTED receipt identity changed") + if receipt_paths: + continue + explicit_aborts = _validated_glob(hot_root, epoch_root, "aborted-sha256-*.json") + for path in explicit_aborts: + item = _load_hashed_json( + hot_root, + path, + hash_field="abort_sha256", + description="Normalized epoch explicit ABORTED transaction", + ) + if ( + item.get("transaction_state") != "ABORTED" + or ( + item.get("prepared_sha256") is not None + and item.get("prepared_sha256") not in prepared_hashes + ) + or stream_root.name != f"stream={item.get('stream_id')}" + or epoch_root.name != f"epoch={item.get('epoch_id')}" + ): + raise ValidationError("Normalized epoch explicit ABORTED identity changed") + if explicit_aborts: + continue + if not prepared_paths: + continue + latest = prepared_payloads[-1] + try: + created_at = datetime.fromisoformat( + str(latest["created_at"]).replace("Z", "+00:00") + ) + journal = cls.recover( + hot_root, + epoch_id=str(latest["epoch_id"]), + stream_id=str(latest["stream_id"]), + provider=str(latest["provider"]), + venue=str(latest["venue"]), + storage_guard=storage_guard, + policy=policy, + normalization_executor=normalization_executor, + ) + reconciled.append(journal.finalize(created_at=created_at)) + except (KeyError, TypeError, ValueError) as exc: + raise ValidationError( + f"Normalized epoch PREPARED transaction is malformed: {epoch_root}" + ) from exc + return tuple(reconciled) + def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochReceipt: self._require_open() + prepared: dict[str, Any] | None = None + result: _NormalizationSummary | None = None try: self._seal_part() if self._records and not self._raw_references: raise ValidationError("Normalized epoch records require Raw segment lineage") + created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") + prepared = self._prepare_transaction(created) result = ( self._publish_normalized() if self._records else _NormalizationSummary(None, 0, 0) ) - created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") - identity = { - "schema_version": "puresaber.normalized-epoch-receipt@1.1.0", - "epoch_id": self.epoch_id, - "stream_id": self.stream_id, - "provider": self.provider, - "venue": self.venue, - "created_at": created, - "records": self._records, - "raw_segments": len(self._raw_references), - "raw_references": [asdict(item) for item in self._raw_references], - "journal_parts": [asdict(item) for item in self._parts], - "normalized_snapshot_id": result.snapshot_id, - "accepted_rows": result.accepted_rows, - "quarantined_rows": result.quarantined_rows, - } - receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() - payload = {**identity, "receipt_sha256": receipt_hash} - receipt_path = self.root / f"receipt-sha256-{receipt_hash}.json" - _atomic_immutable_write(receipt_path, canonical_json_bytes(payload), root=self.hot_root) - reloaded = json.loads(receipt_path.read_text(encoding="utf-8")) - if reloaded != payload: - raise ValidationError("Normalized epoch receipt reload mismatch") + receipt = self._write_committed_receipt(prepared, result) except Exception as exc: try: - self._record_finalize_failure(exc) + self._record_finalize_failure(exc, prepared=prepared, result=result) except Exception as abort_exc: # noqa: BLE001 - both failures must be preserved raise ValidationError( "Normalized finalize failed and its durable failure record also failed; " f"primary={type(exc).__name__}: {exc}; " f"audit={type(abort_exc).__name__}: {abort_exc}" ) from exc + self._prepared_transaction = None + self._state = "OPEN" raise self._open_stream.close() self._state = "FINALIZED" + self._prepared_transaction = None + return receipt + + def _prepare_transaction(self, created_at: str) -> dict[str, Any]: + if self._prepared_transaction is not None: + expected = { + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "records": self._records, + "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "policy": asdict(self.policy), + } + if any(self._prepared_transaction.get(key) != value for key, value in expected.items()): + raise ValidationError("Normalized epoch changed after PREPARED") + self._state = "PREPARED" + return self._prepared_transaction + attempt = self._finalize_attempts + 1 + identity = { + "schema_version": "puresaber.normalized-epoch-transaction@1.0.0", + "transaction_state": "PREPARED", + "attempt": attempt, + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": created_at, + "records": self._records, + "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "policy": asdict(self.policy), + } + digest = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "prepared_sha256": digest} + path = self.root / f"transaction-prepared-{attempt:04d}-sha256-{digest}.json" + _atomic_immutable_write(path, canonical_json_bytes(payload), root=self.hot_root) + reloaded = _load_hashed_json( + self.hot_root, + path, + hash_field="prepared_sha256", + description="Normalized epoch PREPARED transaction", + ) + if reloaded != payload: + raise ValidationError("Normalized epoch PREPARED transaction reload mismatch") + self._finalize_attempts = attempt + self._prepared_transaction = payload + self._state = "PREPARED" + return payload + + def _write_committed_receipt( + self, + prepared: Mapping[str, Any], + result: _NormalizationSummary, + ) -> NormalizedEpochReceipt: + identity = { + "schema_version": "puresaber.normalized-epoch-receipt@1.2.0", + "transaction_state": "COMMITTED", + "prepared_sha256": str(prepared["prepared_sha256"]), + "epoch_id": self.epoch_id, + "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": str(prepared["created_at"]), + "records": self._records, + "raw_segments": len(self._raw_references), + "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "normalized_snapshot_id": result.snapshot_id, + "accepted_rows": result.accepted_rows, + "quarantined_rows": result.quarantined_rows, + } + receipt_hash = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() + payload = {**identity, "receipt_sha256": receipt_hash} + receipt_path = self.root / f"receipt-sha256-{receipt_hash}.json" + _atomic_immutable_write(receipt_path, canonical_json_bytes(payload), root=self.hot_root) + reloaded = _load_hashed_json( + self.hot_root, + receipt_path, + hash_field="receipt_sha256", + description="Normalized epoch receipt", + ) + if reloaded != payload: + raise ValidationError("Normalized epoch receipt reload mismatch") return NormalizedEpochReceipt( schema_version=identity["schema_version"], epoch_id=self.epoch_id, stream_id=self.stream_id, provider=self.provider, venue=self.venue, - created_at=created, + created_at=identity["created_at"], records=self._records, raw_segments=len(self._raw_references), raw_references=tuple(self._raw_references), journal_parts=tuple(self._parts), - normalized_snapshot_id=identity["normalized_snapshot_id"], + normalized_snapshot_id=result.snapshot_id, accepted_rows=result.accepted_rows, quarantined_rows=result.quarantined_rows, + transaction_state="COMMITTED", + prepared_sha256=identity["prepared_sha256"], receipt_sha256=receipt_hash, receipt_path=str(receipt_path), ) @@ -357,11 +705,18 @@ def abort_visible(self, reason: str) -> Path: raise ValidationError("cannot abort a finalized Normalized epoch") if self._state == "ABORTED": raise ValidationError("Normalized epoch is already aborted") - if self._state == "OPEN": - self.flush() + if self._state in {"OPEN", "PREPARED"}: + if self._state == "OPEN": + self.flush() self._open_stream.close() payload = { - "schema_version": "puresaber.normalized-epoch-abort@1.1.0", + "schema_version": "puresaber.normalized-epoch-abort@1.2.0", + "transaction_state": "ABORTED", + "prepared_sha256": ( + str(self._prepared_transaction["prepared_sha256"]) + if self._prepared_transaction is not None + else None + ), "epoch_id": self.epoch_id, "stream_id": self.stream_id, "reason": reason, @@ -373,6 +728,7 @@ def abort_visible(self, reason: str) -> Path: path = self.root / f"aborted-sha256-{payload['abort_sha256']}.json" _atomic_immutable_write(path, canonical_json_bytes(payload), root=self.hot_root) self._state = "ABORTED" + self._prepared_transaction = None return path def _seal_part(self) -> None: @@ -380,11 +736,24 @@ def _seal_part(self) -> None: return self.flush() self._open_stream.close() - digest = _sha256_file(self._open_path) + _validate_safe_path(self.hot_root, self.root, allow_missing=False) + _validate_safe_path(self.hot_root, self._open_path, allow_missing=False) + digest = _sha256_file(self._open_path, trusted_root=self.hot_root) index = len(self._parts) + 1 final_name = f"part-{index:08d}-sha256-{digest}.ndjson" final_path = self.root / final_name - os.replace(self._open_path, final_path) + checked_final = _validate_safe_path(self.hot_root, final_path, allow_missing=True) + try: + os.link(self._open_path, checked_final) + except FileExistsError as exc: + raise ValidationError( + f"Normalized journal part already exists: {checked_final}" + ) from exc + _validate_safe_path(self.hot_root, checked_final, allow_missing=False) + if _sha256_file(checked_final, trusted_root=self.hot_root) != digest: + raise ValidationError(f"Normalized sealed journal part hash changed: {checked_final}") + self._open_path.unlink() + _fsync_directory(self.root) self._parts.append( EpochPart( relative_path=final_name, @@ -397,12 +766,20 @@ def _seal_part(self) -> None: self._unflushed_rows = 0 self._unflushed_bytes = 0 self._open_path = self.root / "part-open.ndjson" - self._open_stream = self._open_path.open("xb") + self._open_stream = _open_journal_file(self.hot_root, self._open_path, "xb") - def _record_finalize_failure(self, exc: Exception) -> Path: + def _record_finalize_failure( + self, + exc: Exception, + *, + prepared: Mapping[str, Any] | None, + result: _NormalizationSummary | None, + ) -> Path: self._finalize_failures += 1 identity = { - "schema_version": "puresaber.normalized-epoch-finalize-failure@1.0.0", + "schema_version": "puresaber.normalized-epoch-finalize-failure@1.1.0", + "transaction_state": "ABORTED", + "prepared_sha256": (str(prepared["prepared_sha256"]) if prepared is not None else None), "epoch_id": self.epoch_id, "stream_id": self.stream_id, "attempt": self._finalize_failures, @@ -410,8 +787,9 @@ def _record_finalize_failure(self, exc: Exception) -> Path: "message": str(exc), "records": self._records, "raw_references": [asdict(item) for item in self._raw_references], + "published_snapshot_id": result.snapshot_id if result is not None else None, "retryable_in_process": True, - "restart_recovery": "journal parts and Raw lineage retained", + "restart_recovery": "reconcile PREPARED/ABORTED transaction idempotently", } digest = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() path = self.root / (f"finalize-failure-{self._finalize_failures:04d}-sha256-{digest}.json") @@ -437,7 +815,7 @@ def _publish_normalized(self) -> _NormalizationSummary: return _publish_epoch_parts(*arguments) def _iter_record_batches(self) -> Iterable[pa.RecordBatch]: - return _iter_epoch_record_batches(self.root, tuple(self._parts)) + return _iter_epoch_record_batches(self.root, tuple(self._parts), trusted_root=self.hot_root) @staticmethod def _record_batch( @@ -451,7 +829,7 @@ def _record_batch( return pa.RecordBatch.from_pylist(prepared, schema=schema) def _iter_records(self) -> Iterable[dict[str, Any]]: - return _iter_epoch_records(self.root, tuple(self._parts)) + return _iter_epoch_records(self.root, tuple(self._parts), trusted_root=self.hot_root) def _require_open(self) -> None: if self._state != "OPEN": @@ -468,12 +846,21 @@ def __del__(self) -> None: stream.close() -def _iter_epoch_records(root: Path, parts: tuple[EpochPart, ...]) -> Iterable[dict[str, Any]]: +def _iter_epoch_records( + root: Path, + parts: tuple[EpochPart, ...], + *, + trusted_root: Path, +) -> Iterable[dict[str, Any]]: + root = _validate_safe_path(trusted_root, root, allow_missing=False) for part in parts: - path = root / part.relative_path - if path.stat().st_size != part.byte_length or _sha256_file(path) != part.content_sha256: + path = _validate_safe_path(trusted_root, root / part.relative_path, allow_missing=False) + if ( + path.stat().st_size != part.byte_length + or _sha256_file(path, trusted_root=trusted_root) != part.content_sha256 + ): raise ValidationError(f"Normalized epoch journal part integrity changed: {path}") - with path.open("rb") as stream: + with _open_journal_file(trusted_root, path, "rb") as stream: for line_number, line in enumerate(stream, start=1): try: value = orjson.loads(line) @@ -487,11 +874,14 @@ def _iter_epoch_records(root: Path, parts: tuple[EpochPart, ...]) -> Iterable[di def _iter_epoch_record_batches( - root: Path, parts: tuple[EpochPart, ...] + root: Path, + parts: tuple[EpochPart, ...], + *, + trusted_root: Path, ) -> Iterable[pa.RecordBatch]: pending: list[dict[str, Any]] = [] pending_identity: tuple[str, str, str] | None = None - for record in _iter_epoch_records(root, parts): + for record in _iter_epoch_records(root, parts, trusted_root=trusted_root): try: schema_id = _CAPTURE_EVENT_SCHEMAS[str(record["event_type"])] identity = ( @@ -523,7 +913,7 @@ def _publish_epoch_parts( ) -> _NormalizationSummary: result = write_normalized_batches( hot_root, - _iter_epoch_record_batches(journal_root, parts), + _iter_epoch_record_batches(journal_root, parts, trusted_root=hot_root), provider=provider, venue=venue, upstream_raw_references=raw_references, @@ -565,7 +955,7 @@ def _publish_epoch_group( def batches() -> Iterable[pa.RecordBatch]: for job in jobs: - yield from _iter_epoch_record_batches(job[1], job[2]) + yield from _iter_epoch_record_batches(job[1], job[2], trusted_root=hot_root) raw_references = tuple(reference for job in jobs for reference in job[5]) result = write_normalized_batches( diff --git a/src/quant_data_kit/capture_v2/storage.py b/src/quant_data_kit/capture_v2/storage.py index 03ccb74..88c8d27 100644 --- a/src/quant_data_kit/capture_v2/storage.py +++ b/src/quant_data_kit/capture_v2/storage.py @@ -715,12 +715,12 @@ def _validate_safe_path(root: Path, candidate: Path, *, allow_missing: bool) -> return lexical_candidate -def _safe_mkdir(root: Path, path: Path) -> Path: +def _safe_mkdir(root: Path, path: Path, *, exist_ok: bool = True) -> Path: checked = _validate_safe_path(root, path, allow_missing=True) lock = Path(root) / ".capture-path-bootstrap.lock" with process_file_lock(lock): _validate_safe_path(root, lock, allow_missing=True) - checked.mkdir(parents=True, exist_ok=True) + checked.mkdir(parents=True, exist_ok=exist_ok) return _validate_safe_path(root, checked, allow_missing=False) diff --git a/tests/test_benchmark_capture_v2.py b/tests/test_benchmark_capture_v2.py index 41e7933..76a01de 100644 --- a/tests/test_benchmark_capture_v2.py +++ b/tests/test_benchmark_capture_v2.py @@ -82,7 +82,9 @@ def test_epoch_group_is_fail_closed_and_preserves_per_journal_counts( part = EpochPart("unused.ndjson", 2, "0" * 64, 0) job = (tmp_path, tmp_path, (part,), "binance", "BINANCE", (), policy) - monkeypatch.setattr(epoch_module, "_iter_epoch_record_batches", lambda *_args: iter(())) + monkeypatch.setattr( + epoch_module, "_iter_epoch_record_batches", lambda *_args, **_kwargs: iter(()) + ) def accepted(_root, batches, **_kwargs): assert list(batches) == [] @@ -148,7 +150,7 @@ def submit(self, fn, *args): len(malformed), ) with pytest.raises(ValidationError, match="line is malformed"): - list(epoch_module._iter_epoch_records(tmp_path, (malformed_part,))) + list(epoch_module._iter_epoch_records(tmp_path, (malformed_part,), trusted_root=tmp_path)) scalar = b"[]\n" scalar_path = tmp_path / "scalar.ndjson" @@ -160,7 +162,7 @@ def submit(self, fn, *args): len(scalar), ) with pytest.raises(ValidationError, match="must be an object"): - list(epoch_module._iter_epoch_records(tmp_path, (scalar_part,))) + list(epoch_module._iter_epoch_records(tmp_path, (scalar_part,), trusted_root=tmp_path)) def test_provider_batching_executor_propagates_results_and_failures() -> None: diff --git a/tests/test_capture_v2_remediation.py b/tests/test_capture_v2_remediation.py index 0a8717e..ef24a79 100644 --- a/tests/test_capture_v2_remediation.py +++ b/tests/test_capture_v2_remediation.py @@ -4,6 +4,8 @@ import hashlib import json import multiprocessing +import os +import subprocess import threading from concurrent.futures import ThreadPoolExecutor from dataclasses import replace @@ -207,10 +209,11 @@ def counted(descriptor: int) -> None: storage_guard=guard, policy=epoch_fixtures.POLICY, ) + before_append = calls journal.append({"value": index} for index in range(1_000)) - assert calls == 3 + assert calls - before_append == 3 journal.abort_visible("test-complete") - assert calls > 3 + assert calls > before_append + 3 def _journal_with_lineage(tmp_path: Path, epoch_id: str) -> NormalizedEpochJournal: @@ -264,9 +267,216 @@ def fail_once(): monkeypatch.setattr(journal, "_publish_normalized", fail_once) with pytest.raises(OSError, match="publish failure"): journal.finalize(created_at=epoch_fixtures.NOW) - assert tuple(journal.root.glob("finalize-failure-*.json")) + failures = tuple(journal.root.glob("finalize-failure-*.json")) + assert failures + failure = json.loads(failures[-1].read_text(encoding="utf-8")) + assert failure["transaction_state"] == "ABORTED" + assert failure["prepared_sha256"] receipt = journal.finalize(created_at=epoch_fixtures.NOW) assert receipt.normalized_snapshot_id and Path(receipt.receipt_path).is_file() + assert receipt.transaction_state == "COMMITTED" + + +def test_normalized_crash_after_publish_reconciles_prepared_transaction( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path, "crash-window") + + def terminate_after_publish(*_args: object, **_kwargs: object): + raise SystemExit("injected process termination") + + monkeypatch.setattr(journal, "_write_committed_receipt", terminate_after_publish) + with pytest.raises(SystemExit, match="process termination"): + journal.finalize(created_at=epoch_fixtures.NOW) + prepared = tuple(journal.root.glob("transaction-prepared-*.json")) + assert len(prepared) == 1 + assert not tuple(journal.root.glob("receipt-sha256-*.json")) + assert not tuple(journal.root.glob("finalize-failure-*.json")) + snapshots = tuple((journal.hot_root / "normalized" / "snapshots").glob("sha256-*")) + assert len(snapshots) == 1 + journal._open_stream.close() + + receipts = NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + assert len(receipts) == 1 + assert receipts[0].transaction_state == "COMMITTED" + assert receipts[0].prepared_sha256 in prepared[0].name + assert receipts[0].normalized_snapshot_id == snapshots[0].name + assert ( + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + == () + ) + + +def test_reconciliation_binds_aborts_to_their_prepared_attempt( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path, "retry-then-crash") + original_publish = journal._publish_normalized + monkeypatch.setattr( + journal, + "_publish_normalized", + lambda: (_ for _ in ()).throw(OSError("first attempt")), + ) + with pytest.raises(OSError, match="first attempt"): + journal.finalize(created_at=epoch_fixtures.NOW) + monkeypatch.setattr(journal, "_publish_normalized", original_publish) + monkeypatch.setattr( + journal, + "_write_committed_receipt", + lambda *_args, **_kwargs: (_ for _ in ()).throw(SystemExit("second attempt crash")), + ) + with pytest.raises(SystemExit, match="second attempt crash"): + journal.finalize(created_at=epoch_fixtures.NOW) + assert len(tuple(journal.root.glob("transaction-prepared-*.json"))) == 2 + assert len(tuple(journal.root.glob("finalize-failure-*.json"))) == 1 + journal._open_stream.close() + receipts = NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + assert len(receipts) == 1 and receipts[0].transaction_state == "COMMITTED" + + +def test_pending_transaction_rejects_mutation_and_malformed_time( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _journal_with_lineage(tmp_path, "pending-mutation") + monkeypatch.setattr( + journal, + "_write_committed_receipt", + lambda *_args, **_kwargs: (_ for _ in ()).throw(SystemExit("pending")), + ) + with pytest.raises(SystemExit): + journal.finalize(created_at=epoch_fixtures.NOW) + journal._records += 1 + with pytest.raises(ValidationError, match="changed after PREPARED"): + journal._prepare_transaction(epoch_fixtures.NOW.isoformat()) + journal._records -= 1 + journal._open_stream.close() + prepared = next(journal.root.glob("transaction-prepared-*.json")) + _rewrite_content_addressed(prepared, "prepared_sha256", created_at="not-a-time") + with pytest.raises(ValidationError, match="PREPARED transaction is malformed"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +def test_epoch_recovery_rejects_reparse_journal_parent( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + journal = _failed_epoch_for_recovery(tmp_path, "reparse-recovery") + real_reparse = storage_module._is_reparse_point + blocked = journal.root.parent + monkeypatch.setattr( + storage_module, + "_is_reparse_point", + lambda path: Path(path) == blocked or real_reparse(path), + ) + with pytest.raises(ValidationError, match="reparse"): + NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +@pytest.mark.skipif(os.name != "nt", reason="requires a real Windows directory junction") +def test_epoch_creation_rejects_real_windows_junction(tmp_path: Path) -> None: + hot, _archive, guard = epoch_fixtures.storage(tmp_path) + outside = tmp_path / "outside-journal" + outside.mkdir() + capture = hot / "capture" + capture.mkdir() + junction = capture / "normalized-epoch-journal" + created = subprocess.run( + ["cmd", "/c", "mklink", "/J", str(junction), str(outside)], + check=False, + capture_output=True, + text=True, + ) + if created.returncode != 0: + pytest.skip(f"Windows junction creation unavailable: {created.stderr.strip()}") + try: + with pytest.raises(ValidationError, match="reparse"): + NormalizedEpochJournal( + hot, + epoch_id="junction", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + assert not tuple(outside.iterdir()) + finally: + junction.rmdir() + + +def test_epoch_journal_helpers_and_reconcile_shapes_fail_closed( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, _archive, guard = epoch_fixtures.storage(tmp_path) + plain = hot / "plain.bin" + plain.write_bytes(b"plain") + assert epoch_module._sha256_file(plain) == hashlib.sha256(b"plain").hexdigest() + + malformed = hot / "malformed-sha256-deadbeef.json" + malformed.write_text("{", encoding="utf-8") + with pytest.raises(ValidationError, match="unreadable"): + epoch_module._load_hashed_json(hot, malformed, hash_field="digest", description="malformed") + scalar = hot / "scalar-sha256-deadbeef.json" + scalar.write_text("[]", encoding="utf-8") + with pytest.raises(ValidationError, match="JSON object"): + epoch_module._load_hashed_json(hot, scalar, hash_field="digest", description="scalar") + + exclusive = hot / "exclusive.bin" + original_validate = epoch_module._validate_safe_path + + def fail_after_open(root: Path, path: Path, *, allow_missing: bool) -> Path: + if Path(path) == exclusive and not allow_missing: + raise ValidationError("injected post-open path replacement") + return original_validate(root, path, allow_missing=allow_missing) + + monkeypatch.setattr(epoch_module, "_validate_safe_path", fail_after_open) + with pytest.raises(ValidationError, match="post-open"): + epoch_module._open_journal_file(hot, exclusive, "xb") + monkeypatch.setattr(epoch_module, "_validate_safe_path", original_validate) + + base = hot / "capture" / "normalized-epoch-journal" + base.mkdir(parents=True) + (base / "stream=not-a-directory").write_text("x", encoding="utf-8") + with pytest.raises(ValidationError, match="stream journal is not a directory"): + NormalizedEpochJournal.reconcile_pending( + hot, storage_guard=guard, policy=epoch_fixtures.POLICY + ) + + other_root = tmp_path / "epoch-shape" + other_root.mkdir() + other_hot, _other_archive, other_guard = epoch_fixtures.storage(other_root) + stream_root = other_hot / "capture" / "normalized-epoch-journal" / "stream=stream" + stream_root.mkdir(parents=True) + (stream_root / "epoch=not-a-directory").write_text("x", encoding="utf-8") + with pytest.raises(ValidationError, match="epoch journal is not a directory"): + NormalizedEpochJournal.reconcile_pending( + other_hot, + storage_guard=other_guard, + policy=epoch_fixtures.POLICY, + ) def test_normalized_receipt_failure_abort_failure_and_process_recovery( @@ -314,7 +524,8 @@ def failure_record_fails(path: Path, body: bytes, *, root: Path | None = None) - ValidationError, match="primary=OSError: publish.*audit=OSError: abort audit" ): broken.finalize(created_at=epoch_fixtures.NOW) - assert broken._state == "OPEN" + assert broken._state == "PREPARED" + assert tuple(broken.root.glob("transaction-prepared-*.json")) def test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains() -> None: @@ -857,6 +1068,78 @@ def _runner_for_negative_test(tmp_path: Path) -> CaptureStreamRunner: ) +def test_coordinator_blocks_network_when_epoch_reconciliation_fails( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + capture_config, _streams = collector_fixtures.config(tmp_path, attempts=1) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + + def fail_reconciliation(_cls, *_args: object, **_kwargs: object): + raise ValidationError("injected unresolved PREPARED transaction") + + monkeypatch.setattr( + NormalizedEpochJournal, + "reconcile_pending", + classmethod(fail_reconciliation), + ) + + class NetworkMustNotStart: + async def connect(self, *_args: object, **_kwargs: object): + raise AssertionError("network opened before epoch reconciliation") + + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=archive, + websockets=NetworkMustNotStart(), + clock=collector_fixtures.FakeClock(), + policy=collector_fixtures.POLICY, + ) + report = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert report.status == "CAPTURE_FAILED" + assert report.long_running_capture_started is False + assert all(item.websocket_messages == 0 for item in report.streams) + assert all("unresolved PREPARED" in item.errors[0] for item in report.streams) + + +def test_coordinator_reports_reconciled_epoch_before_network( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + capture_config, streams = collector_fixtures.config(tmp_path, attempts=1) + guard = collector_fixtures.storage_guard(capture_config.hot_root, capture_config.archive_root) + archive = LocalArchiveController( + capture_config.hot_root, + capture_config.archive_root, + capture_config.restore_root, + storage_guard=guard, + ) + monkeypatch.setattr( + NormalizedEpochJournal, + "reconcile_pending", + classmethod(lambda _cls, *_args, **_kwargs: (object(),)), + ) + alerts: list[str] = [] + coordinator = CryptoL2CaptureCoordinator( + capture_config, + storage_guard=guard, + archive=archive, + http=collector_fixtures.FakeHttp(), + websockets=collector_fixtures.FakeConnector(streams), + clock=collector_fixtures.FakeClock(), + alert_sink=alerts.append, + policy=collector_fixtures.POLICY, + ) + report = asyncio.run(coordinator.run(maximum_websocket_messages=3)) + assert report.status == "BOUNDED_PROBE_COMPLETE" + assert "CAPTURE_EPOCH_RECOVERY_COMMITTED:1" in alerts + + def test_collector_deadline_malformed_snapshot_and_internal_guards(tmp_path: Path) -> None: runner = _runner_for_negative_test(tmp_path) runner._probe_message_limit = 3 @@ -999,15 +1282,275 @@ def _failed_epoch_for_recovery(tmp_path: Path, epoch_id: str) -> NormalizedEpoch return journal +def _rewrite_content_addressed(path: Path, hash_field: str, **changes: object) -> Path: + payload = json.loads(path.read_text(encoding="utf-8")) + payload.pop(hash_field) + payload.update(changes) + digest = hashlib.sha256(epoch_module.canonical_json_bytes(payload)).hexdigest() + payload[hash_field] = digest + prefix = path.name.split("-sha256-", maxsplit=1)[0] + rewritten = path.with_name(f"{prefix}-sha256-{digest}{path.suffix}") + path.rename(rewritten) + rewritten.write_text(json.dumps(payload), encoding="utf-8") + return rewritten + + def _rewrite_failure(journal: NormalizedEpochJournal, **changes: object) -> None: path = next(journal.root.glob("finalize-failure-*.json")) - payload = json.loads(path.read_text(encoding="utf-8")) + _rewrite_content_addressed(path, "failure_sha256", **changes) + + +@pytest.mark.parametrize( + ("case", "changes"), + ( + ("state", {"transaction_state": "BROKEN"}), + ("epoch", {"epoch_id": "different"}), + ("stream", {"stream_id": "different"}), + ("provider", {"provider": "okx"}), + ("venue", {"venue": "OKX"}), + ("policy", {"policy": {}}), + ("attempt", {"attempt": 0}), + ), +) +def test_epoch_recovery_rejects_each_prepared_identity_field( + tmp_path: Path, case: str, changes: dict[str, object] +) -> None: + journal = _failed_epoch_for_recovery(tmp_path / case, case) + prepared = next(journal.root.glob("transaction-prepared-*.json")) + _rewrite_content_addressed(prepared, "prepared_sha256", **changes) + with pytest.raises(ValidationError, match="transaction identity"): + NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + with pytest.raises(ValidationError, match="transaction identity"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +@pytest.mark.parametrize( + ("case", "changes"), + ( + ("state", {"transaction_state": "BROKEN"}), + ("epoch", {"epoch_id": "different"}), + ("stream", {"stream_id": "different"}), + ("prepared", {"prepared_sha256": "0" * 64}), + ), +) +def test_epoch_recovery_rejects_each_committed_identity_field( + tmp_path: Path, case: str, changes: dict[str, object] +) -> None: + journal = _journal_with_lineage(tmp_path / case, f"receipt-{case}") + journal.finalize(created_at=epoch_fixtures.NOW) + receipt = next(journal.root.glob("receipt-sha256-*.json")) + _rewrite_content_addressed(receipt, "receipt_sha256", **changes) + with pytest.raises(ValidationError, match="COMMITTED receipt identity"): + NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + with pytest.raises(ValidationError, match="COMMITTED receipt identity"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +@pytest.mark.parametrize( + ("case", "changes"), + ( + ("state", {"transaction_state": "BROKEN"}), + ("epoch", {"epoch_id": "different"}), + ("stream", {"stream_id": "different"}), + ("prepared", {"prepared_sha256": "0" * 64}), + ), +) +def test_epoch_recovery_rejects_each_explicit_abort_identity_field( + tmp_path: Path, case: str, changes: dict[str, object] +) -> None: + root = tmp_path / case + root.mkdir() + hot, _archive, guard = epoch_fixtures.storage(root) + journal = NormalizedEpochJournal( + hot, + epoch_id=f"abort-{case}", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + abort = journal.abort_visible("operator") + _rewrite_content_addressed(abort, "abort_sha256", **changes) + with pytest.raises(ValidationError, match="explicit ABORTED identity"): + NormalizedEpochJournal.recover( + hot, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=guard, + policy=journal.policy, + ) + with pytest.raises(ValidationError, match="explicit ABORTED identity"): + NormalizedEpochJournal.reconcile_pending( + hot, + storage_guard=guard, + policy=journal.policy, + ) + + +def test_epoch_recovery_rejects_failure_lineage_reference_and_filename( + tmp_path: Path, +) -> None: + retryable = _failed_epoch_for_recovery(tmp_path / "retryable", "retryable") + _rewrite_failure(retryable, retryable_in_process=False) + with pytest.raises(ValidationError, match="not recoverable"): + NormalizedEpochJournal.recover( + retryable.hot_root, + epoch_id=retryable.epoch_id, + stream_id=retryable.stream_id, + provider=retryable.provider, + venue=retryable.venue, + storage_guard=retryable.storage_guard, + policy=retryable.policy, + ) + + lineage = _failed_epoch_for_recovery(tmp_path / "lineage", "lineage") + _rewrite_failure(lineage, raw_references=[]) + with pytest.raises(ValidationError, match="Raw lineage changed"): + NormalizedEpochJournal.recover( + lineage.hot_root, + epoch_id=lineage.epoch_id, + stream_id=lineage.stream_id, + provider=lineage.provider, + venue=lineage.venue, + storage_guard=lineage.storage_guard, + policy=lineage.policy, + ) + + unknown = _failed_epoch_for_recovery(tmp_path / "unknown", "unknown") + _rewrite_failure(unknown, prepared_sha256="0" * 64) + with pytest.raises(ValidationError, match="transaction identity changed"): + NormalizedEpochJournal.recover( + unknown.hot_root, + epoch_id=unknown.epoch_id, + stream_id=unknown.stream_id, + provider=unknown.provider, + venue=unknown.venue, + storage_guard=unknown.storage_guard, + policy=unknown.policy, + ) + + filename = _failed_epoch_for_recovery(tmp_path / "filename", "filename") + failure = next(filename.root.glob("finalize-failure-*.json")) + payload = json.loads(failure.read_text(encoding="utf-8")) payload.pop("failure_sha256") - payload.update(changes) + payload["message"] = "changed" payload["failure_sha256"] = hashlib.sha256( - epoch_module.canonical_json_bytes(payload) + epoch_module.canonical_json_bytes( + {key: value for key, value in payload.items() if key != "failure_sha256"} + ) ).hexdigest() - path.write_text(json.dumps(payload), encoding="utf-8") + failure.write_text(json.dumps(payload), encoding="utf-8") + with pytest.raises(ValidationError, match="filename hash changed"): + NormalizedEpochJournal.recover( + filename.hot_root, + epoch_id=filename.epoch_id, + stream_id=filename.stream_id, + provider=filename.provider, + venue=filename.venue, + storage_guard=filename.storage_guard, + policy=filename.policy, + ) + + +def test_epoch_legacy_failure_and_pending_manifest_negative_paths(tmp_path: Path) -> None: + legacy = _failed_epoch_for_recovery(tmp_path / "legacy", "legacy") + _rewrite_failure(legacy, prepared_sha256=None) + for path in legacy.root.glob("transaction-prepared-*.json"): + path.unlink() + recovered = NormalizedEpochJournal.recover( + legacy.hot_root, + epoch_id=legacy.epoch_id, + stream_id=legacy.stream_id, + provider=legacy.provider, + venue=legacy.venue, + storage_guard=legacy.storage_guard, + policy=legacy.policy, + ) + assert recovered.records == legacy.records + recovered.abort_visible("legacy verified") + assert ( + NormalizedEpochJournal.reconcile_pending( + legacy.hot_root, + storage_guard=legacy.storage_guard, + policy=legacy.policy, + ) + == () + ) + + records = _journal_with_lineage(tmp_path / "records", "records") + monkey = records._write_committed_receipt + records._write_committed_receipt = ( # type: ignore[method-assign] + lambda *_args, **_kwargs: (_ for _ in ()).throw(SystemExit("pending")) + ) + with pytest.raises(SystemExit): + records.finalize(created_at=epoch_fixtures.NOW) + records._write_committed_receipt = monkey # type: ignore[method-assign] + records._open_stream.close() + prepared = next(records.root.glob("transaction-prepared-*.json")) + _rewrite_content_addressed(prepared, "prepared_sha256", records=records.records + 1) + with pytest.raises(ValidationError, match="record count changed"): + NormalizedEpochJournal.recover( + records.hot_root, + epoch_id=records.epoch_id, + stream_id=records.stream_id, + provider=records.provider, + venue=records.venue, + storage_guard=records.storage_guard, + policy=records.policy, + ) + + multiple = _journal_with_lineage(tmp_path / "multiple", "multiple") + original_publish = multiple._publish_normalized + multiple._publish_normalized = ( # type: ignore[method-assign] + lambda: (_ for _ in ()).throw(OSError("first")) + ) + with pytest.raises(OSError): + multiple.finalize(created_at=epoch_fixtures.NOW) + multiple._publish_normalized = original_publish # type: ignore[method-assign] + multiple._write_committed_receipt = ( # type: ignore[method-assign] + lambda *_args, **_kwargs: (_ for _ in ()).throw(SystemExit("second")) + ) + with pytest.raises(SystemExit): + multiple.finalize(created_at=epoch_fixtures.NOW) + multiple._open_stream.close() + _rewrite_failure(multiple, prepared_sha256=None) + with pytest.raises(ValidationError, match="multiple pending"): + NormalizedEpochJournal.recover( + multiple.hot_root, + epoch_id=multiple.epoch_id, + stream_id=multiple.stream_id, + provider=multiple.provider, + venue=multiple.venue, + storage_guard=multiple.storage_guard, + policy=multiple.policy, + ) def test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush( @@ -1093,10 +1636,16 @@ def corrupt_receipt(path: Path, body: bytes, *, root: Path | None = None) -> Non path.write_text("{}", encoding="utf-8") monkeypatch.setattr(epoch_module, "_atomic_immutable_write", corrupt_receipt) - with pytest.raises(ValidationError, match="receipt reload mismatch"): + with pytest.raises(ValidationError, match="receipt hash changed"): journal.finalize(created_at=epoch_fixtures.NOW) assert tuple(journal.root.glob("finalize-failure-*.json")) assert journal._state == "OPEN" + with pytest.raises(ValidationError, match="receipt hash changed"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) def test_epoch_abort_publish_failure_keeps_retryable_open_state( diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index 2b934ec..6a8e75a 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -37,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == version("quant-data-kit") == "0.7.1" + assert qdk.__version__ == version("quant-data-kit") == "0.7.2" for name in ( "write_raw_bytes", "write_normalized_events", From c772757e0aef964eb95a63558ea4698f92a73b58 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 19:50:47 +0800 Subject: [PATCH 12/16] test: certify normalized epoch reconciliation --- .../m7-capture-remediation-v3/.gitattributes | 1 + ...517849cbea0abdbb6d374c28892c0348b7446.json | 1 + ...d9544811936f8ba2236bded44184d814678d5.json | 1 + ...7de3630438bd46469e637a29d5e511fc75380.json | 40 + ...b5e6fee66264a7d8cfb02e14a93f86f13f70f.json | 703 ++++++++++++++++++ ...dd4c96ee351d9852c296f7814c9f2f1bfc933.json | 1 + ...ea8fad5ae188983508ccbfa3a195dbb79d7c5.json | 1 + ...1701b5d91e9c426d2de265316d6140e727a73.json | 1 + ...67259a5f8e8259b4a507226573434da9ed748.json | 1 + ...a10e345db3d15016bbebefc632c4f5793efa11.xml | 1 + ...fcfa64307eab701e67ae70f39758ffe60b5181.xml | 1 + ...85bd3681e1b93be5a5e87bc67e3edbb20867f.json | 1 + ...529f5c0de322463d3b023cfcc94c0aab3d41d.json | 1 + ...e08a419287db5d453777f4e9b842fb1a90038.json | 1 + .../evidence-manifest.json | 102 +++ .../m7-capture-remediation-v3/summary.md | 118 +++ .../technical-handoff.md | 67 ++ 17 files changed, 1042 insertions(+) create mode 100644 validation/m7-capture-remediation-v3/.gitattributes create mode 100644 validation/m7-capture-remediation-v3/artifacts/capacity-preflight-refusal-sha256-2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/capacity-run-refusal-sha256-54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/cli-invocation-results-sha256-99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/data-10m-3run-sha256-5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/dense-round-01-sha256-e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/dense-round-02-sha256-fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/dense-round-03-sha256-659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/full-coverage-sha256-125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/pytest-hardexit-junit-sha256-1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11.xml create mode 100644 validation/m7-capture-remediation-v3/artifacts/pytest-main-junit-sha256-a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181.xml create mode 100644 validation/m7-capture-remediation-v3/artifacts/sparse-round-01-sha256-252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/sparse-round-02-sha256-f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d.json create mode 100644 validation/m7-capture-remediation-v3/artifacts/sparse-round-03-sha256-c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038.json create mode 100644 validation/m7-capture-remediation-v3/evidence-manifest.json create mode 100644 validation/m7-capture-remediation-v3/summary.md create mode 100644 validation/m7-capture-remediation-v3/technical-handoff.md diff --git a/validation/m7-capture-remediation-v3/.gitattributes b/validation/m7-capture-remediation-v3/.gitattributes new file mode 100644 index 0000000..b3af488 --- /dev/null +++ b/validation/m7-capture-remediation-v3/.gitattributes @@ -0,0 +1 @@ +artifacts/* binary diff --git a/validation/m7-capture-remediation-v3/artifacts/capacity-preflight-refusal-sha256-2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446.json b/validation/m7-capture-remediation-v3/artifacts/capacity-preflight-refusal-sha256-2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446.json new file mode 100644 index 0000000..228c323 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/capacity-preflight-refusal-sha256-2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","continuous_days":0,"ended_at":"2026-08-30T11:43:59.198976Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"721b7b76eff58d61eacb364c251f66fea6e026845f1af4f1aa9f982c35a8b697","run_id":"capture-15390565f9b349dd951bb7b8cca6212a","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T11:43:59.194977Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011930112, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/capacity-run-refusal-sha256-54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5.json b/validation/m7-capture-remediation-v3/artifacts/capacity-run-refusal-sha256-54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5.json new file mode 100644 index 0000000..059a0a3 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/capacity-run-refusal-sha256-54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","continuous_days":0,"ended_at":"2026-08-30T11:44:07.399150Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"d7292c6dc602c6b637ace07dbb24781d3a1198cb190d38f77b6efb087275c22f","run_id":"capture-5e396eff726440b892118702d3c7bf8c","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T11:44:07.396152Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=63011807232, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/cli-invocation-results-sha256-99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380.json b/validation/m7-capture-remediation-v3/artifacts/cli-invocation-results-sha256-99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380.json new file mode 100644 index 0000000..ae1bba6 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/cli-invocation-results-sha256-99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380.json @@ -0,0 +1,40 @@ +{ + "schema_version": "puresaber.m7-cli-invocation-evidence@1.0.0", + "source_commit": "a4a5a16542a2c4c74edf8205b982c681248517a3", + "source_working_tree_dirty": false, + "config": { + "path": "H:\\Documents\\ChatGPT\\temp\\m7-capture-preflight-a4a5a16.json", + "sha256": "e5c898ff99ca93a3a42515a1606c13bdc4f69a7dd693d81816fc0a5fa880f3dd" + }, + "invocations": [ + { + "argv": [ + ".\\.venv-m7-verify\\Scripts\\qdk-capture.exe", + "H:\\Documents\\ChatGPT\\temp\\m7-capture-preflight-a4a5a16.json", + "--mode", + "preflight" + ], + "exit_code": 2, + "run_id": "capture-15390565f9b349dd951bb7b8cca6212a", + "report_sha256": "721b7b76eff58d61eacb364c251f66fea6e026845f1af4f1aa9f982c35a8b697", + "status": "PAUSED_PREFLIGHT_FAILED", + "websocket_messages": 0, + "long_running_capture_started": false + }, + { + "argv": [ + ".\\.venv-m7-verify\\Scripts\\qdk-capture.exe", + "H:\\Documents\\ChatGPT\\temp\\m7-capture-preflight-a4a5a16.json", + "--mode", + "run", + "--confirm-long-running" + ], + "exit_code": 2, + "run_id": "capture-5e396eff726440b892118702d3c7bf8c", + "report_sha256": "d7292c6dc602c6b637ace07dbb24781d3a1198cb190d38f77b6efb087275c22f", + "status": "PAUSED_PREFLIGHT_FAILED", + "websocket_messages": 0, + "long_running_capture_started": false + } + ] +} diff --git a/validation/m7-capture-remediation-v3/artifacts/data-10m-3run-sha256-5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f.json b/validation/m7-capture-remediation-v3/artifacts/data-10m-3run-sha256-5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f.json new file mode 100644 index 0000000..b91341e --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/data-10m-3run-sha256-5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "a4a5a16542a2c4c74edf8205b982c681248517a3", + "dirty": false + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.7.2", + "temp_environment": { + "TEMP": "F:\\puresaber-m7-temp-a4a5a16-final", + "TMP": "F:\\puresaber-m7-temp-a4a5a16-final", + "tempfile_gettempdir": "F:\\puresaber-m7-temp-a4a5a16-final" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 9238581248, + "total_bytes": 321320923136, + "used_bytes": 312082341888 + }, + "F:\\": { + "free_bytes": 303526797312, + "total_bytes": 594535321600, + "used_bytes": 291008524288 + }, + "H:\\": { + "free_bytes": 224073252864, + "total_bytes": 998553677824, + "used_bytes": 774480424960 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 9238855680, + "total_bytes": 321320923136, + "used_bytes": 312082067456 + }, + "F:\\": { + "free_bytes": 303526797312, + "total_bytes": 594535321600, + "used_bytes": 291008524288 + }, + "H:\\": { + "free_bytes": 227384352768, + "total_bytes": 998553677824, + "used_bytes": 771169325056 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\m7-data-10m-artifacts-a4a5a16-final" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.6859308000021, + "events_per_second": 186268.54095635068, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3358187520, + "peak_rss_gib": 3.1275558471679688, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.7000030463095754e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 7.700000060140155e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.367213600002287 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.590872600001603 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0898836000014853 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3726943000001484 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.190000203787349e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4392798999979277 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4566124000011769 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6949808999997913 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.47798249999687 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 52.77825869999651, + "events_per_second": 189471.9577021714, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3367989248, + "peak_rss_gib": 3.1366844177246094, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.799996531801298e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.179999763844535e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.07602880000195 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.18731090000074 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.130625699999655 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.322335299999395 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.480000229203142e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4590833000002021 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4564480999979423 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6638665999998921 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.087008800004696 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.06238229999872, + "events_per_second": 188457.42626976327, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3341262848, + "peak_rss_gib": 3.1117935180664062, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.999998054699972e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 8.209999941755086e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.110150900000008 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.135568699999567 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.1049144999997225 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.47565740000573 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.300000313785858e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4517291999982262 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.501689400000032 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6878967000011471 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.007715499999904 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 3.1366844177246094, + "median_events_per_second": 188457.42626976327, + "minimum_events_per_second": 186268.54095635068, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/m7-capture-remediation-v3/artifacts/dense-round-01-sha256-e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933.json b/validation/m7-capture-remediation-v3/artifacts/dense-round-01-sha256-e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933.json new file mode 100644 index 0000000..4c2661a --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/dense-round-01-sha256-e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.8169365329221727,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.8169365329221727},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:37:46.880103Z","report_sha256":"3cf6622d5b89d4b7d462b5676ee83c3aea2afe25484e8eb74235a6601d54d608","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":26.199020899999596,"event_loop_delay_p95_milliseconds":23.72570000079577,"event_loop_delay_p99_milliseconds":36.36679999908665,"event_loop_delay_samples":1215,"last_epoch_submit_seconds":15.712056200001825,"normalization_group_window_seconds":10.486689899997145,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12202.288063368236,"throughput_websocket_messages_per_second":305.3549226337738,"total_wall_seconds":26.272746099999495,"worker_teardown_seconds":0.0737251999998989,"workload_elapsed_seconds":26.199020899999596},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/dense-round-02-sha256-fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5.json b/validation/m7-capture-remediation-v3/artifacts/dense-round-02-sha256-fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5.json new file mode 100644 index 0000000..74e7626 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/dense-round-02-sha256-fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.751843158608586,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.751843158608586},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:38:14.641700Z","report_sha256":"50a25c116f1f28f5576f8babe33c0b80640fbd55511fa75627ab74d6144f80de","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":26.653566200002388,"event_loop_delay_p95_milliseconds":31.818100000236882,"event_loop_delay_p99_milliseconds":41.67579999921145,"event_loop_delay_samples":1184,"last_epoch_submit_seconds":16.662383099999715,"normalization_group_window_seconds":10.00551059999998,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":11994.192356892616,"throughput_websocket_messages_per_second":300.1474526886869,"total_wall_seconds":26.720673700001498,"worker_teardown_seconds":0.06710749999911059,"workload_elapsed_seconds":26.653566200002388},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/dense-round-03-sha256-659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73.json b/validation/m7-capture-remediation-v3/artifacts/dense-round-03-sha256-659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73.json new file mode 100644 index 0000000..22e5a1f --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/dense-round-03-sha256-659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.9177291146456374,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.9177291146456383},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:38:41.266978Z","report_sha256":"bb48d7f18deb8d163688eaba03d2b440cbae3f81e4352151a340bbf58e287a06","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":25.524990900001285,"event_loop_delay_p95_milliseconds":23.221399998874404,"event_loop_delay_p99_milliseconds":36.88460000194027,"event_loop_delay_samples":1175,"last_epoch_submit_seconds":15.670499600000767,"normalization_group_window_seconds":9.867673100001412,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12524.509852028346,"throughput_websocket_messages_per_second":313.41832917165107,"total_wall_seconds":25.593490400002338,"worker_teardown_seconds":0.06849950000105309,"workload_elapsed_seconds":25.524990900001285},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/full-coverage-sha256-125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748.json b/validation/m7-capture-remediation-v3/artifacts/full-coverage-sha256-125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748.json new file mode 100644 index 0000000..ed1bdc0 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/full-coverage-sha256-125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.16.0", "timestamp": "2026-08-30T19:37:05.667613", "branch_coverage": true, "show_contexts": false}, "files": {"src\\quant_data_kit\\__init__.py": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\_version.py": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\__init__.py": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\base.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 41, 42, 43, 44, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 142, 143, 144, 145, 146, 151, 153, 154, 156, 169, 170, 171, 172, 173, 177, 178, 179, 181, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 216, 217, 218, 219], "summary": {"covered_lines": 124, "num_statements": 126, "percent_covered": 97.46835443037975, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 6, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 2, "covered_branches": 30, "missing_branches": 2, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [45, 193], "excluded_lines": [50, 51, 52, 53, 54, 55], "executed_branches": [[43, 44], [57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99], [133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[43, 45], [192, 193]], "functions": {"AdapterContext.instrument": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "AdapterContext.session_id": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter.transaction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51], "start_line": 51, "executed_branches": [], "missing_branches": []}, "ProviderAdapter.adapt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [53], "start_line": 53, "executed_branches": [], "missing_branches": []}, "utc_from_milliseconds": {"executed_lines": [57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "utc_from_text": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73]], "missing_branches": []}, "fixed": {"executed_lines": [77, 78, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "event_identity": {"executed_lines": [95, 96, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [[95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}, "BookSequenceNormalizer.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.transaction": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.snapshot": {"executed_lines": [132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[133, 134], [133, 135]], "missing_branches": []}, "BookSequenceNormalizer.heartbeat": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [[142, 143], [142, 144], [145, -140], [145, 146]], "missing_branches": []}, "BookSequenceNormalizer.reset": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.advance_without_levels": {"executed_lines": [169, 170, 171, 172, 173, 177, 178, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179]], "missing_branches": []}, "BookSequenceNormalizer.delta": {"executed_lines": [189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [193], "excluded_lines": [], "start_line": 181, "executed_branches": [[189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "adapt_fixture_messages": {"executed_lines": [216, 217, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 66, 76, 84, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AdapterInstrument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "AdapterContext": {"executed_lines": [34, 35, 36, 37, 42, 43, 44], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 27, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51, 53], "start_line": 48, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer": {"executed_lines": [116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 146, 153, 154, 169, 170, 171, 172, 173, 177, 178, 179, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [193], "excluded_lines": [], "start_line": 112, "executed_branches": [[133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212, 216, 217, 218, 219], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [[57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\binance.py": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 69, "num_statements": 70, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]], "functions": {"BinanceFixtureAdapter.__init__": {"executed_lines": [40, 41, 42, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, 41], [40, 42]], "missing_branches": []}, "BinanceFixtureAdapter._event_id": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.transaction": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.adapt": {"executed_lines": [56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 55, "executed_branches": [[63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BinanceFixtureAdapter": {"executed_lines": [40, 41, 42, 43, 44, 47, 48, 52, 53, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32, "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\cn_neutral.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 109, 110, 111], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": [], "functions": {"CNNeutralFixtureAdapter.__init__": {"executed_lines": [32, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [[32, 33], [32, 34]], "missing_branches": []}, "CNNeutralFixtureAdapter.transaction": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CNNeutralFixtureAdapter.adapt": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "CNNeutralFixtureAdapter._level": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CNNeutralFixtureAdapter": {"executed_lines": [32, 33, 34, 35, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 111], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\okx.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 86, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 293, 294, 295, 296], "summary": {"covered_lines": 146, "num_statements": 152, "percent_covered": 95.09803921568627, "percent_covered_display": "95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.05263157894737, "percent_statements_covered_display": "96", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]], "functions": {"OKXFixtureAdapter.__init__": {"executed_lines": [44, 45, 46, 47, 48, 49], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 46]], "missing_branches": []}, "OKXFixtureAdapter.transaction": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[62, 63], [62, 66]], "missing_branches": []}, "OKXFixtureAdapter._book_transaction": {"executed_lines": [70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [[76, 77], [76, 79], [80, 81], [80, 83]], "missing_branches": []}, "OKXFixtureAdapter._require_fresh_snapshot": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._signed_crc32": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._checksum": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 106], [102, 103], [104, 101], [104, 105]], "missing_branches": [[102, 104]]}, "OKXFixtureAdapter._apply_book_message": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [123, 127, 132, 133], "excluded_lines": [], "start_line": 109, "executed_branches": [[116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135]], "missing_branches": [[122, 123], [126, 127]]}, "OKXFixtureAdapter.adapt": {"executed_lines": [138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.34146341463415, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [229, 234], "excluded_lines": [], "start_line": 137, "executed_branches": [[145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[228, 229]]}, "OKXFixtureAdapter._book_level": {"executed_lines": [295, 296], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"OKXFixtureAdapter": {"executed_lines": [44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 87, 88, 89, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 295, 296], "summary": {"covered_lines": 118, "num_statements": 124, "percent_covered": 94.31818181818181, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.16129032258064, "percent_statements_covered_display": "95", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "start_line": 35, "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\calendar.py": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]], "functions": {"trading_days_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": [[14, 15], [14, 16]]}, "load_sse_trade_dates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [22, 24, 25, 26, 27], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "is_trading_day": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [31, 32, 33, 34], "excluded_lines": [], "start_line": 30, "executed_branches": [], "missing_branches": [[32, 33], [32, 34]]}, "": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]]}}}, "src\\quant_data_kit\\capture_v2\\__init__.py": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]], "functions": {"_reject_credentials": {"executed_lines": [53, 54, 55, 56, 57, 60, 61, 62, 63], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63]], "missing_branches": []}, "load_capture_config": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89]], "missing_branches": []}, "_streams": {"executed_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [[106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117]], "missing_branches": []}, "_parser": {"executed_lines": [128, 132, 133, 139, 145, 150], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "main_capture": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 153, "executed_branches": [[158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 66, 105, 127, 153, 186], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [187], "excluded_lines": [], "start_line": 1, "executed_branches": [[186, -1]], "missing_branches": [[186, 187]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]]}}}, "src\\quant_data_kit\\capture_v2\\collector.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 335, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 365, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 393, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 438, 445, 446, 447, 448, 449, 450, 451, 467, 468, 469, 470, 471, 472, 473, 474, 475, 481, 482, 483, 484, 485, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 557, 558, 559, 560, 563, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 615, 618, 634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 663, 664, 666, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 690, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 716, 717, 718, 719, 722, 730, 731, 732, 733, 734, 735, 772, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 789, 790, 791, 792, 793, 796, 797, 798, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 820, 821, 822, 825, 826, 828, 837, 838, 841, 854, 855, 858, 888, 898, 899, 907, 908, 924, 925, 926, 927, 928, 929, 932, 933, 934, 935, 936, 937, 938], "summary": {"covered_lines": 465, "num_statements": 485, "percent_covered": 94.99136442141624, "percent_covered_display": "95", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 95.87628865979381, "percent_statements_covered_display": "96", "num_branches": 94, "num_partial_branches": 9, "covered_branches": 85, "missing_branches": 9, "percent_branches_covered": 90.42553191489361, "percent_branches_covered_display": "90"}, "missing_lines": [146, 147, 231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555, 673, 752, 753, 764, 788, 827], "excluded_lines": [], "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144], [229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569], [730, 731], [730, 732], [734, 735], [734, 772], [781, 782], [781, 821], [783, 784], [783, 801], [797, 783], [797, 798], [801, 781], [801, 802], [802, 803], [802, 804], [807, 808], [807, 810], [808, 809], [826, 828]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555], [808, 807], [826, 827]], "functions": {"_json_object": {"executed_lines": [117, 118, 119, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125]], "missing_branches": []}, "_frame_metadata": {"executed_lines": [129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 128, "executed_branches": [[130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}, "CaptureStreamRunner.__init__": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner.run": {"executed_lines": [227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303], "summary": {"covered_lines": 61, "num_statements": 67, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.04477611940298, "percent_statements_covered_display": "91", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "79"}, "missing_lines": [231, 232, 238, 296, 297, 301], "excluded_lines": [], "start_line": 226, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292]], "missing_branches": [[230, 231], [234, 238], [291, 301]]}, "CaptureStreamRunner._handle_cancellation": {"executed_lines": [306, 307, 308, 309, 310, 311], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 305, "executed_branches": [[308, 309]], "missing_branches": [[308, 310]]}, "CaptureStreamRunner._run_connection": {"executed_lines": [314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313, "executed_branches": [[328, 329], [328, 331]], "missing_branches": []}, "CaptureStreamRunner._run_binance": {"executed_lines": [340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[354, 355], [354, 356], [358, -335], [358, 362]], "missing_branches": []}, "CaptureStreamRunner._run_okx": {"executed_lines": [370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [[381, 382], [381, 384], [386, -365], [386, 390]], "missing_branches": []}, "CaptureStreamRunner._receive_frame": {"executed_lines": [394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393, "executed_branches": [[394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436]], "missing_branches": []}, "CaptureStreamRunner._https_frame": {"executed_lines": [445, 446, 447, 448, 449, 450, 451], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._apply_outcome": {"executed_lines": [468, 469, 470, 471, 472, 473, 474, 475], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475]], "missing_branches": []}, "CaptureStreamRunner._new_epoch": {"executed_lines": [482, 483, 484, 485], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481, "executed_branches": [[482, 483], [482, 484]], "missing_branches": []}, "CaptureStreamRunner._drain_segments": {"executed_lines": [501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 500, "executed_branches": [[501, -500], [501, 502], [503, 504], [503, 505], [505, 506]], "missing_branches": [[505, 507]]}, "CaptureStreamRunner._finalize_epoch": {"executed_lines": [511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 510, "executed_branches": [[511, 512], [511, 513], [514, 515], [514, 519]], "missing_branches": []}, "CaptureStreamRunner._terminal_cleanup": {"executed_lines": [524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 523, "executed_branches": [[536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523]], "missing_branches": [[547, 548], [554, 555]]}, "CaptureStreamRunner._pause": {"executed_lines": [558, 559, 560, 563, 564], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "CaptureStreamRunner._alert": {"executed_lines": [567, 568, 569], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[567, 568], [567, 569]], "missing_branches": []}, "CaptureStreamRunner._report": {"executed_lines": [572, 573, 574, 575, 576], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.__init__": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight": {"executed_lines": [664], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight_only": {"executed_lines": [667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [673], "excluded_lines": [], "start_line": 666, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.run": {"executed_lines": [691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 716, 717, 718, 719, 722, 730, 731, 732, 733, 734, 735, 772, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 789, 790, 791, 792, 793, 796, 797, 798, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 820, 821, 822, 825, 826, 828], "summary": {"covered_lines": 58, "num_statements": 63, "percent_covered": 91.56626506024097, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.06349206349206, "percent_statements_covered_display": "92", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [752, 753, 764, 788, 827], "excluded_lines": [], "start_line": 690, "executed_branches": [[730, 731], [730, 732], [734, 735], [734, 772], [781, 782], [781, 821], [783, 784], [783, 801], [797, 783], [797, 798], [801, 781], [801, 802], [802, 803], [802, 804], [807, 808], [807, 810], [808, 809], [826, 828]], "missing_branches": [[808, 807], [826, 827]]}, "CryptoL2CaptureCoordinator._stream_succeeded": {"executed_lines": [841], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 838, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._empty_stream_report": {"executed_lines": [858], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 855, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._write_report": {"executed_lines": [898, 899, 907, 908, 924, 925, 926, 927, 928, 929, 932, 933, 934, 935, 936, 937, 938], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 888, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 128, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 837, 838, 854, 855, 888], "summary": {"covered_lines": 97, "num_statements": 97, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CaptureStreamReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [], "missing_branches": []}, "CaptureRunReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 311, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 445, 446, 447, 448, 449, 450, 451, 468, 469, 470, 471, 472, 473, 474, 475, 482, 483, 484, 485, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 558, 559, 560, 563, 564, 567, 568, 569, 572, 573, 574, 575, 576], "summary": {"covered_lines": 243, "num_statements": 255, "percent_covered": 94.0809968847352, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 95.29411764705883, "percent_statements_covered_display": "95", "num_branches": 66, "num_partial_branches": 7, "covered_branches": 59, "missing_branches": 7, "percent_branches_covered": 89.39393939393939, "percent_branches_covered_display": "89"}, "missing_lines": [231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 151, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555]]}, "CryptoL2CaptureCoordinator": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 664, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 716, 717, 718, 719, 722, 730, 731, 732, 733, 734, 735, 772, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 789, 790, 791, 792, 793, 796, 797, 798, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 820, 821, 822, 825, 826, 828, 841, 858, 898, 899, 907, 908, 924, 925, 926, 927, 928, 929, 932, 933, 934, 935, 936, 937, 938], "summary": {"covered_lines": 103, "num_statements": 109, "percent_covered": 93.7984496124031, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.4954128440367, "percent_statements_covered_display": "94", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [673, 752, 753, 764, 788, 827], "excluded_lines": [], "start_line": 615, "executed_branches": [[730, 731], [730, 732], [734, 735], [734, 772], [781, 782], [781, 821], [783, 784], [783, 801], [797, 783], [797, 798], [801, 781], [801, 802], [802, 803], [802, 804], [807, 808], [807, 810], [808, 809], [826, 828]], "missing_branches": [[808, 807], [826, 827]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 837, 838, 854, 855, 888], "summary": {"covered_lines": 119, "num_statements": 121, "percent_covered": 98.44961240310077, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.34710743801652, "percent_statements_covered_display": "98", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\epoch.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 34, 35, 41, 42, 43, 44, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 106, 107, 108, 109, 112, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 151, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, 217, 219, 220, 221, 222, 223, 224, 229, 230, 231, 232, 233, 234, 235, 236, 237, 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, 268, 269, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 307, 308, 317, 318, 319, 328, 329, 335, 336, 345, 346, 355, 356, 357, 358, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 383, 388, 389, 390, 391, 393, 396, 398, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 441, 443, 444, 445, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 463, 464, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 489, 498, 499, 505, 508, 509, 510, 511, 517, 523, 524, 525, 526, 527, 528, 534, 543, 544, 545, 546, 548, 549, 550, 553, 563, 564, 565, 568, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 583, 584, 585, 586, 587, 588, 593, 594, 595, 596, 597, 598, 599, 601, 602, 603, 613, 614, 615, 616, 617, 618, 632, 633, 634, 635, 636, 642, 644, 645, 646, 647, 649, 654, 671, 672, 673, 674, 675, 681, 683, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 727, 728, 729, 730, 731, 732, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 752, 753, 755, 756, 757, 765, 766, 767, 768, 769, 771, 778, 779, 794, 795, 796, 801, 803, 804, 813, 814, 815, 817, 820, 821, 825, 826, 827, 828, 829, 831, 832, 834, 835, 836, 838, 839, 840, 841, 842, 843, 846, 849, 855, 856, 857, 858, 862, 863, 864, 865, 866, 867, 868, 871, 872, 873, 876, 882, 883, 884, 885, 886, 887, 896, 897, 898, 899, 900, 901, 902, 905, 914, 922, 929, 943, 944, 945, 946, 947, 948, 949, 953, 954, 956, 957, 958, 960, 961, 969, 970, 971, 972], "summary": {"covered_lines": 493, "num_statements": 506, "percent_covered": 96.51515151515152, "percent_covered_display": "97", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 97.43083003952569, "percent_statements_covered_display": "97", "num_branches": 154, "num_partial_branches": 10, "covered_branches": 144, "missing_branches": 10, "percent_branches_covered": 93.50649350649351, "percent_branches_covered_display": "94"}, "missing_lines": [392, 442, 547, 643, 682, 748, 749, 754, 818, 844, 845, 892, 893], "excluded_lines": [], "executed_branches": [[87, 88], [87, 89], [91, 92], [91, 93], [124, 125], [124, 126], [127, 128], [127, 129], [129, 130], [129, 131], [168, 169], [168, 170], [170, 171], [170, 172], [206, 207], [206, 216], [209, 212], [209, 214], [216, -202], [216, 217], [221, -219], [221, 222], [237, 242], [237, 243], [243, 221], [243, 244], [248, 249], [248, 250], [259, 260], [259, 261], [291, 292], [291, 293], [307, 308], [307, 318], [308, 307], [308, 317], [328, 329], [328, 336], [329, 328], [329, 335], [345, 346], [345, 356], [346, 355], [356, 357], [356, 358], [367, 368], [367, 380], [368, 369], [368, 370], [371, 372], [371, 373], [374, 375], [374, 376], [376, 377], [376, 378], [378, 367], [378, 379], [388, 389], [388, 390], [391, 393], [396, 398], [396, 409], [426, 427], [426, 434], [428, 429], [428, 430], [438, 439], [438, 440], [441, 443], [445, 448], [445, 449], [477, 478], [477, 479], [480, 481], [480, 568], [481, 482], [481, 483], [483, 480], [483, 484], [484, 485], [484, 486], [498, 499], [498, 508], [499, 498], [499, 505], [510, 511], [510, 524], [517, 510], [517, 523], [524, 525], [524, 526], [527, 528], [527, 544], [534, 527], [534, 543], [544, 545], [544, 546], [546, 548], [576, 577], [576, 578], [602, 603], [602, 617], [613, 614], [613, 615], [642, 644], [681, 683], [704, 705], [704, 706], [706, 707], [706, 708], [708, 709], [709, 710], [735, 736], [735, 737], [753, 755], [813, 814], [813, 815], [825, 826], [825, 827], [835, -834], [835, 836], [840, -838], [840, 841], [856, -849], [856, 857], [858, 862], [858, 863], [864, 856], [864, 865], [871, 872], [871, 873], [884, 885], [884, 901], [896, 897], [896, 899], [901, 902], [943, 944], [943, 945], [949, 953], [949, 954], [957, -956], [957, 958], [969, 970], [969, 971]], "missing_branches": [[346, 345], [391, 392], [441, 442], [546, 547], [642, 643], [681, 682], [708, 712], [709, 711], [753, 754], [901, -876]], "functions": {"_sha256_file": {"executed_lines": [87, 88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[87, 88], [87, 89], [91, 92], [91, 93]], "missing_branches": []}, "_journal_root": {"executed_lines": [97], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "_validated_glob": {"executed_lines": [107, 108, 109], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "_load_hashed_json": {"executed_lines": [119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [[124, 125], [124, 126], [127, 128], [127, 129], [129, 130], [129, 131]], "missing_branches": []}, "_open_journal_file": {"executed_lines": [136, 137, 138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.__init__": {"executed_lines": [168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[168, 169], [168, 170], [170, 171], [170, 172]], "missing_branches": []}, "NormalizedEpochJournal.append": {"executed_lines": [203, 204, 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, 217], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [[206, 207], [206, 216], [209, 212], [209, 214], [216, -202], [216, 217]], "missing_branches": []}, "NormalizedEpochJournal._append_bodies": {"executed_lines": [220, 221, 222, 223, 224, 229, 230, 231, 232, 233, 234, 235, 236, 237, 242, 243, 244], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [[221, -219], [221, 222], [237, 242], [237, 243], [243, 221], [243, 244]], "missing_branches": []}, "NormalizedEpochJournal.flush": {"executed_lines": [247, 248, 249, 250, 251, 252, 253, 254], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246, "executed_branches": [[248, 249], [248, 250]], "missing_branches": []}, "NormalizedEpochJournal.record_segment": {"executed_lines": [257, 258, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 256, "executed_branches": [[259, 260], [259, 261]], "missing_branches": []}, "NormalizedEpochJournal.records": {"executed_lines": [266], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.recover": {"executed_lines": [288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 307, 308, 317, 318, 319, 328, 329, 335, 336, 345, 346, 355, 356, 357, 358, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 383, 388, 389, 390, 391, 393, 396, 398, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 441, 443, 444, 445, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461], "summary": {"covered_lines": 94, "num_statements": 96, "percent_covered": 96.42857142857143, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.91666666666667, "percent_statements_covered_display": "98", "num_branches": 44, "num_partial_branches": 3, "covered_branches": 41, "missing_branches": 3, "percent_branches_covered": 93.18181818181819, "percent_branches_covered_display": "93"}, "missing_lines": [392, 442], "excluded_lines": [], "start_line": 269, "executed_branches": [[291, 292], [291, 293], [307, 308], [307, 318], [308, 307], [308, 317], [328, 329], [328, 336], [329, 328], [329, 335], [345, 346], [345, 356], [346, 355], [356, 357], [356, 358], [367, 368], [367, 380], [368, 369], [368, 370], [371, 372], [371, 373], [374, 375], [374, 376], [376, 377], [376, 378], [378, 367], [378, 379], [388, 389], [388, 390], [391, 393], [396, 398], [396, 409], [426, 427], [426, 434], [428, 429], [428, 430], [438, 439], [438, 440], [441, 443], [445, 448], [445, 449]], "missing_branches": [[346, 345], [391, 392], [441, 442]]}, "NormalizedEpochJournal.reconcile_pending": {"executed_lines": [474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 489, 498, 499, 505, 508, 509, 510, 511, 517, 523, 524, 525, 526, 527, 528, 534, 543, 544, 545, 546, 548, 549, 550, 553, 563, 564, 565, 568], "summary": {"covered_lines": 41, "num_statements": 42, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.61904761904762, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 1, "covered_branches": 27, "missing_branches": 1, "percent_branches_covered": 96.42857142857143, "percent_branches_covered_display": "96"}, "missing_lines": [547], "excluded_lines": [], "start_line": 464, "executed_branches": [[477, 478], [477, 479], [480, 481], [480, 568], [481, 482], [481, 483], [483, 480], [483, 484], [484, 485], [484, 486], [498, 499], [498, 508], [499, 498], [499, 505], [510, 511], [510, 524], [517, 510], [517, 523], [524, 525], [524, 526], [527, 528], [527, 544], [534, 527], [534, 543], [544, 545], [544, 546], [546, 548]], "missing_branches": [[546, 547]]}, "NormalizedEpochJournal.finalize": {"executed_lines": [571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 583, 584, 585, 586, 587, 588, 593, 594, 595, 596, 597, 598, 599], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [[576, 577], [576, 578]], "missing_branches": []}, "NormalizedEpochJournal._prepare_transaction": {"executed_lines": [602, 603, 613, 614, 615, 616, 617, 618, 632, 633, 634, 635, 636, 642, 644, 645, 646, 647], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [643], "excluded_lines": [], "start_line": 601, "executed_branches": [[602, 603], [602, 617], [613, 614], [613, 615], [642, 644]], "missing_branches": [[642, 643]]}, "NormalizedEpochJournal._write_committed_receipt": {"executed_lines": [654, 671, 672, 673, 674, 675, 681, 683], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [682], "excluded_lines": [], "start_line": 649, "executed_branches": [[681, 683]], "missing_branches": [[681, 682]]}, "NormalizedEpochJournal.abort_visible": {"executed_lines": [704, 705, 706, 707, 708, 709, 710, 711, 712, 727, 728, 729, 730, 731, 732], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [], "excluded_lines": [], "start_line": 703, "executed_branches": [[704, 705], [704, 706], [706, 707], [706, 708], [708, 709], [709, 710]], "missing_branches": [[708, 712], [709, 711]]}, "NormalizedEpochJournal._seal_part": {"executed_lines": [735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 752, 753, 755, 756, 757, 765, 766, 767, 768, 769], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [748, 749, 754], "excluded_lines": [], "start_line": 734, "executed_branches": [[735, 736], [735, 737], [753, 755]], "missing_branches": [[753, 754]]}, "NormalizedEpochJournal._record_finalize_failure": {"executed_lines": [778, 779, 794, 795, 796, 801], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 771, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._publish_normalized": {"executed_lines": [804, 813, 814, 815], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 803, "executed_branches": [[813, 814], [813, 815]], "missing_branches": []}, "NormalizedEpochJournal._iter_record_batches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [818], "excluded_lines": [], "start_line": 817, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._record_batch": {"executed_lines": [825, 826, 827, 828, 829], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 821, "executed_branches": [[825, 826], [825, 827]], "missing_branches": []}, "NormalizedEpochJournal._iter_records": {"executed_lines": [832], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 831, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._require_open": {"executed_lines": [835, 836], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 834, "executed_branches": [[835, -834], [835, 836]], "missing_branches": []}, "NormalizedEpochJournal.__del__": {"executed_lines": [839, 840, 841, 842, 843, 846], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [844, 845], "excluded_lines": [], "start_line": 838, "executed_branches": [[840, -838], [840, 841]], "missing_branches": []}, "_iter_epoch_records": {"executed_lines": [855, 856, 857, 858, 862, 863, 864, 865, 866, 867, 868, 871, 872, 873], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 849, "executed_branches": [[856, -849], [856, 857], [858, 862], [858, 863], [864, 856], [864, 865], [871, 872], [871, 873]], "missing_branches": []}, "_iter_epoch_record_batches": {"executed_lines": [882, 883, 884, 885, 886, 887, 896, 897, 898, 899, 900, 901, 902], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [892, 893], "excluded_lines": [], "start_line": 876, "executed_branches": [[884, 885], [884, 901], [896, 897], [896, 899], [901, 902]], "missing_branches": [[901, -876]]}, "_publish_epoch_parts": {"executed_lines": [914, 922], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 905, "executed_branches": [], "missing_branches": []}, "_publish_epoch_group": {"executed_lines": [943, 944, 945, 946, 947, 948, 949, 953, 954, 956, 960, 961, 969, 970, 971, 972], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 929, "executed_branches": [[943, 944], [943, 945], [949, 953], [949, 954], [969, 970], [969, 971]], "missing_branches": []}, "_publish_epoch_group.batches": {"executed_lines": [957, 958], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 956, "executed_branches": [[957, -956], [957, 958]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 34, 35, 41, 42, 43, 44, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 86, 96, 106, 112, 135, 148, 151, 202, 219, 246, 256, 264, 265, 268, 269, 463, 464, 570, 601, 649, 703, 734, 771, 803, 817, 820, 821, 831, 834, 838, 849, 876, 905, 929], "summary": {"covered_lines": 87, "num_statements": 87, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"EpochPart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "NormalizedEpochReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_NormalizationSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal": {"executed_lines": [168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, 217, 220, 221, 222, 223, 224, 229, 230, 231, 232, 233, 234, 235, 236, 237, 242, 243, 244, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 260, 261, 262, 266, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 307, 308, 317, 318, 319, 328, 329, 335, 336, 345, 346, 355, 356, 357, 358, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 383, 388, 389, 390, 391, 393, 396, 398, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 441, 443, 444, 445, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 489, 498, 499, 505, 508, 509, 510, 511, 517, 523, 524, 525, 526, 527, 528, 534, 543, 544, 545, 546, 548, 549, 550, 553, 563, 564, 565, 568, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 583, 584, 585, 586, 587, 588, 593, 594, 595, 596, 597, 598, 599, 602, 603, 613, 614, 615, 616, 617, 618, 632, 633, 634, 635, 636, 642, 644, 645, 646, 647, 654, 671, 672, 673, 674, 675, 681, 683, 704, 705, 706, 707, 708, 709, 710, 711, 712, 727, 728, 729, 730, 731, 732, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 752, 753, 755, 756, 757, 765, 766, 767, 768, 769, 778, 779, 794, 795, 796, 801, 804, 813, 814, 815, 825, 826, 827, 828, 829, 832, 835, 836, 839, 840, 841, 842, 843, 846], "summary": {"covered_lines": 324, "num_statements": 335, "percent_covered": 95.62363238512035, "percent_covered_display": "96", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 96.71641791044776, "percent_statements_covered_display": "97", "num_branches": 122, "num_partial_branches": 9, "covered_branches": 113, "missing_branches": 9, "percent_branches_covered": 92.62295081967213, "percent_branches_covered_display": "93"}, "missing_lines": [392, 442, 547, 643, 682, 748, 749, 754, 818, 844, 845], "excluded_lines": [], "start_line": 148, "executed_branches": [[168, 169], [168, 170], [170, 171], [170, 172], [206, 207], [206, 216], [209, 212], [209, 214], [216, -202], [216, 217], [221, -219], [221, 222], [237, 242], [237, 243], [243, 221], [243, 244], [248, 249], [248, 250], [259, 260], [259, 261], [291, 292], [291, 293], [307, 308], [307, 318], [308, 307], [308, 317], [328, 329], [328, 336], [329, 328], [329, 335], [345, 346], [345, 356], [346, 355], [356, 357], [356, 358], [367, 368], [367, 380], [368, 369], [368, 370], [371, 372], [371, 373], [374, 375], [374, 376], [376, 377], [376, 378], [378, 367], [378, 379], [388, 389], [388, 390], [391, 393], [396, 398], [396, 409], [426, 427], [426, 434], [428, 429], [428, 430], [438, 439], [438, 440], [441, 443], [445, 448], [445, 449], [477, 478], [477, 479], [480, 481], [480, 568], [481, 482], [481, 483], [483, 480], [483, 484], [484, 485], [484, 486], [498, 499], [498, 508], [499, 498], [499, 505], [510, 511], [510, 524], [517, 510], [517, 523], [524, 525], [524, 526], [527, 528], [527, 544], [534, 527], [534, 543], [544, 545], [544, 546], [546, 548], [576, 577], [576, 578], [602, 603], [602, 617], [613, 614], [613, 615], [642, 644], [681, 683], [704, 705], [704, 706], [706, 707], [706, 708], [708, 709], [709, 710], [735, 736], [735, 737], [753, 755], [813, 814], [813, 815], [825, 826], [825, 827], [835, -834], [835, 836], [840, -838], [840, 841]], "missing_branches": [[346, 345], [391, 392], [441, 442], [546, 547], [642, 643], [681, 682], [708, 712], [709, 711], [753, 754]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 34, 35, 41, 42, 43, 44, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 106, 107, 108, 109, 112, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 151, 202, 219, 246, 256, 264, 265, 268, 269, 463, 464, 570, 601, 649, 703, 734, 771, 803, 817, 820, 821, 831, 834, 838, 849, 855, 856, 857, 858, 862, 863, 864, 865, 866, 867, 868, 871, 872, 873, 876, 882, 883, 884, 885, 886, 887, 896, 897, 898, 899, 900, 901, 902, 905, 914, 922, 929, 943, 944, 945, 946, 947, 948, 949, 953, 954, 956, 957, 958, 960, 961, 969, 970, 971, 972], "summary": {"covered_lines": 169, "num_statements": 171, "percent_covered": 98.52216748768473, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.83040935672514, "percent_statements_covered_display": "99", "num_branches": 32, "num_partial_branches": 1, "covered_branches": 31, "missing_branches": 1, "percent_branches_covered": 96.875, "percent_branches_covered_display": "97"}, "missing_lines": [892, 893], "excluded_lines": [], "start_line": 1, "executed_branches": [[87, 88], [87, 89], [91, 92], [91, 93], [124, 125], [124, 126], [127, 128], [127, 129], [129, 130], [129, 131], [856, -849], [856, 857], [858, 862], [858, 863], [864, 856], [864, 865], [871, 872], [871, 873], [884, 885], [884, 901], [896, 897], [896, 899], [901, 902], [943, 944], [943, 945], [949, 953], [949, 954], [957, -956], [957, 958], [969, 970], [969, 971]], "missing_branches": [[901, -876]]}}}, "src\\quant_data_kit\\capture_v2\\models.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 74, 76, 80, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 123, 124, 127, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 217, 219, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 338, 339, 340, 341, 348, 356, 357, 358, 359, 367, 368, 372, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 415, 416, 417, 419, 420, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 489, 492, 494, 495, 506, 509, 510, 511, 512, 513, 515, 516, 520, 524, 525, 542, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 563, 564, 565, 567, 568, 569, 571, 577, 578, 579, 585, 588, 592, 593, 594, 596, 599, 603, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 346, "num_statements": 354, "percent_covered": 96.62162162162163, "percent_covered_display": "97", "missing_lines": 8, "excluded_lines": 5, "percent_statements_covered": 97.74011299435028, "percent_statements_covered_display": "98", "num_branches": 90, "num_partial_branches": 7, "covered_branches": 83, "missing_branches": 7, "percent_branches_covered": 92.22222222222223, "percent_branches_covered_display": "92"}, "missing_lines": [77, 128, 164, 166, 168, 189, 517, 625], "excluded_lines": [67, 68, 69, 70, 71], "executed_branches": [[90, 91], [90, 92], [104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119], [138, 139], [138, 140], [140, -137], [140, 141], [163, 165], [165, 167], [167, -156], [186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212], [235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248], [261, 262], [261, 295], [295, 301], [295, 315], [339, 340], [339, 341], [367, 368], [367, 372], [392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474], [516, -515], [578, 579], [578, 592], [621, 622], [624, 633], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": [[163, 164], [165, 166], [167, 168], [188, 189], [516, 517], [621, 634], [624, 625]], "functions": {"utc_text": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "canonical_json_bytes": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "Clock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67], "start_line": 67, "executed_branches": [], "missing_branches": []}, "Clock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69], "start_line": 69, "executed_branches": [], "missing_branches": []}, "SystemClock.now": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73, "executed_branches": [], "missing_branches": []}, "SystemClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.__init__": {"executed_lines": [84, 85], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.now": {"executed_lines": [88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy.__post_init__": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111]], "missing_branches": []}, "RetryPolicy.delay": {"executed_lines": [114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [[114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "random_jitter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "SegmentRotation.__post_init__": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy.__post_init__": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 156, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig.__post_init__": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [189], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202]], "missing_branches": [[188, 189]]}, "StreamConfig.capability": {"executed_lines": [206, 207, 208, 209, 210, 212, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [[207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": []}, "StreamConfig.mapping_source": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217, "executed_branches": [], "missing_branches": []}, "CaptureConfig.__post_init__": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "CaptureConfig.providers": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureConfig.capabilities": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "default_crypto_l2_streams": {"executed_lines": [260, 261, 262, 263, 278, 295, 301, 302, 303, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315]], "missing_branches": []}, "default_symbol_mappings": {"executed_lines": [323, 324], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318, "executed_branches": [], "missing_branches": []}, "SymbolMappingResolver.__init__": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "SymbolMappingResolver.resolve": {"executed_lines": [356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348, "executed_branches": [[367, 368], [367, 372]], "missing_branches": []}, "RawFrame.__post_init__": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409]], "missing_branches": []}, "RawFrame.raw_sha256": {"executed_lines": [417], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416, "executed_branches": [], "missing_branches": []}, "RawFrame.record": {"executed_lines": [420], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419, "executed_branches": [], "missing_branches": []}, "RawFrame.from_record": {"executed_lines": [441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent.__post_init__": {"executed_lines": [489, 492], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [], "missing_branches": []}, "AuditEvent.payload": {"executed_lines": [495, 506], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "AuditReference.__post_init__": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 515, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "CaptureStateMachine.__init__": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.events": {"executed_lines": [565], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.references": {"executed_lines": [569], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 568, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.transition": {"executed_lines": [577, 578, 579, 585, 588, 592, 593, 594], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [[578, 579], [578, 592]], "missing_branches": []}, "CaptureStateMachine.audit": {"executed_lines": [599], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine._record": {"executed_lines": [610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [625], "excluded_lines": [], "start_line": 603, "executed_branches": [[621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "assert_m7_scope": {"executed_lines": [639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 638, "executed_branches": [[642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655]], "missing_branches": []}, "_validate_public_url": {"executed_lines": [664, 665, 672], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [[665, -663], [665, 672]], "missing_branches": []}, "_canonical_url_identity": {"executed_lines": [678, 679], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_m7_stream_identity": {"executed_lines": [689], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 688, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 56, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 318, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 663, 675, 688], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "MarketKind": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CaptureState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": []}, "Clock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67, 69], "start_line": 66, "executed_branches": [], "missing_branches": []}, "SystemClock": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock": {"executed_lines": [84, 85, 88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "SegmentRotation": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 145, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 206, 207, 208, 209, 210, 212, 213, 214, 219], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [189], "excluded_lines": [], "start_line": 172, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": [[188, 189]]}, "CaptureConfig": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "SymbolMappingResolver": {"executed_lines": [338, 339, 340, 341, 356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [[339, 340], [339, 341], [367, 368], [367, 372]], "missing_branches": []}, "RawFrame": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 417, 420, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent": {"executed_lines": [489, 492, 495, 506], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 478, "executed_branches": [], "missing_branches": []}, "AuditReference": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 510, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "AuditPersistenceError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 520, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 565, 569, 577, 578, 579, 585, 588, 592, 593, 594, 599, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 92.5, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [625], "excluded_lines": [], "start_line": 524, "executed_branches": [[578, 579], [578, 592], [621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 195, "num_statements": 196, "percent_covered": 99.52380952380952, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 99.48979591836735, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 61, 62, 63, 64, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 204, 207, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 398, 399, 400, 401, 411, 412, 413, 415, 416, 422, 423, 424, 426, 427, 428, 429, 430, 432, 433, 434, 436, 437, 438, 440, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 467, 468, 469, 470, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 516, 517, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 544, 545, 546, 547, 549, 550, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 727, 728, 729, 737, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768, 771, 774, 783, 784, 785, 786, 787, 788, 789, 796, 797, 799, 800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 838, 841, 850, 851, 852, 853, 854, 855, 857, 858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929, 931, 932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029, 1038, 1039, 1040, 1041, 1042, 1043, 1046, 1047, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1067, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 612, "num_statements": 647, "percent_covered": 94.22336328626444, "percent_covered_display": "94", "missing_lines": 35, "excluded_lines": 6, "percent_statements_covered": 94.5904173106646, "percent_statements_covered_display": "95", "num_branches": 132, "num_partial_branches": 4, "covered_branches": 122, "missing_branches": 10, "percent_branches_covered": 92.42424242424242, "percent_branches_covered_display": "92"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 730, 731, 732, 734, 869, 870, 875, 876, 934, 978, 979], "excluded_lines": [68, 69, 70, 72, 73, 74], "executed_branches": [[62, 63], [62, 64], [94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467], [525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [728, 729], [740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768], [800, 801], [800, 802], [818, 819], [818, 820], [829, 830], [829, 831], [833, 834], [833, 835], [858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905], [933, 935], [996, 997], [996, 998], [1046, -1038], [1046, 1047], [1054, 1055], [1054, 1056], [1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [728, 730], [767, -737], [933, 934]], "functions": {"VolumeIdentity.__post_init__": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 68, "executed_branches": [], "missing_branches": []}, "CapacityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 72, "executed_branches": [], "missing_branches": []}, "default_capacity_probe": {"executed_lines": [76, 77], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity": {"executed_lines": [81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145]], "missing_branches": []}, "_linux_physical_devices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166]]}, "default_volume_identity": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [181, 182], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180]], "missing_branches": [[179, 181]]}, "StoragePreflight.alert": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.__init__": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [[229, 230], [229, 231]], "missing_branches": []}, "CaptureStorageGuard._tree_size": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._minimum_free": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.preflight": {"executed_lines": [262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335]], "missing_branches": []}, "CaptureStorageGuard.require_preflight": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "CaptureStorageGuard.require_hot_capacity": {"executed_lines": [344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366]], "missing_branches": []}, "CaptureStorageGuard.require_archive_capacity": {"executed_lines": [371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394]], "missing_branches": []}, "CaptureStorageGuard.probe_statistics": {"executed_lines": [400, 401], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.force_hot_probe": {"executed_lines": [412, 413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_due": {"executed_lines": [416], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_capacity": {"executed_lines": [423, 424], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_hot_size": {"executed_lines": [427, 428, 429, 430], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 426, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._ensure_hot_baseline": {"executed_lines": [433, 434], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [[433, -432], [433, 434]], "missing_branches": []}, "CaptureStorageGuard._ensure_archive_baseline": {"executed_lines": [437, 438], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [[437, -436], [437, 438]], "missing_branches": []}, "CaptureStorageGuard._refresh_hot": {"executed_lines": [441, 442, 443, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[451, 452], [451, 453]], "missing_branches": []}, "CaptureStorageGuard._refresh_archive": {"executed_lines": [460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459, "executed_branches": [[462, 463], [462, 467]], "missing_branches": []}, "RawSegmentWriter.__init__": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 491, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.pending_messages": {"executed_lines": [518], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.segment_count": {"executed_lines": [522], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.append": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542]], "missing_branches": []}, "RawSegmentWriter.drain_completed": {"executed_lines": [545, 546, 547], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.peek_completed": {"executed_lines": [550], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 549, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.acknowledge_completed": {"executed_lines": [553, 554, 555], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552, "executed_branches": [[553, 554], [553, 555]], "missing_branches": []}, "RawSegmentWriter.flush": {"executed_lines": [558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "_sha256_file": {"executed_lines": [668, 669, 670, 671, 672], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[670, 671], [670, 672]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [676, 677, 678, 679, 680, 681, 682], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [[676, 677], [676, 678]], "missing_branches": []}, "_validate_safe_path": {"executed_lines": [686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [708, 709, 713, 714], "excluded_lines": [], "start_line": 685, "executed_branches": [[688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706]], "missing_branches": []}, "_safe_mkdir": {"executed_lines": [719, 720, 721, 722, 723, 724], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "_fsync_directory": {"executed_lines": [728, 729], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [730, 731, 732, 734], "excluded_lines": [], "start_line": 727, "executed_branches": [[728, 729]], "missing_branches": [[728, 730]]}, "_atomic_immutable_write": {"executed_lines": [740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768]], "missing_branches": [[767, -737]]}, "DurableAuditStore.__init__": {"executed_lines": [783, 784, 785, 786, 787, 788, 789, 796, 797], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 774, "executed_branches": [], "missing_branches": []}, "DurableAuditStore.append": {"executed_lines": [800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 799, "executed_branches": [[800, 801], [800, 802], [818, 819], [818, 820]], "missing_branches": []}, "DurableAuditStore.load": {"executed_lines": [824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 823, "executed_branches": [[829, 830], [829, 831], [833, 834], [833, 835]], "missing_branches": []}, "LocalArchiveController.__init__": {"executed_lines": [850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 841, "executed_branches": [], "missing_branches": []}, "LocalArchiveController.preflight": {"executed_lines": [858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [869, 870, 875, 876], "excluded_lines": [], "start_line": 857, "executed_branches": [[858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905]], "missing_branches": []}, "LocalArchiveController.archive_segment": {"executed_lines": [932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029], "summary": {"covered_lines": 44, "num_statements": 47, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.61702127659575, "percent_statements_covered_display": "94", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [934, 978, 979], "excluded_lines": [], "start_line": 931, "executed_branches": [[933, 935], [996, 997], [996, 998]], "missing_branches": [[933, 934]]}, "LocalArchiveController._assert_identity": {"executed_lines": [1039, 1040, 1041, 1042, 1043, 1046, 1047], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1038, "executed_branches": [[1046, -1038], [1046, 1047]], "missing_branches": []}, "LocalArchiveController._remove_restore_temp": {"executed_lines": [1053, 1054, 1055, 1056], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1052, "executed_branches": [[1054, 1055], [1054, 1056]], "missing_branches": []}, "LocalArchiveController._hot_object_dir": {"executed_lines": [1059, 1067], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1058, "executed_branches": [], "missing_branches": []}, "iter_segment_frames": {"executed_lines": [1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1070, "executed_branches": [[1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 80, 154, 177, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 675, 685, 718, 727, 737, 771, 774, 799, 823, 838, 841, 857, 931, 1038, 1052, 1058, 1070], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CapturePausedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "DiskCapacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "VolumeIdentity": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 67, "executed_branches": [], "missing_branches": []}, "CapacityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.DiskExtent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.VolumeDiskExtents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "StoragePreflight": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 400, 401, 412, 413, 416, 423, 424, 427, 428, 429, 430, 433, 434, 437, 438, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 40, "num_partial_branches": 0, "covered_branches": 40, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [[229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467]], "missing_branches": []}, "RawSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 518, 522, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 545, 546, 547, 550, 553, 554, 555, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "ArchivePreflightReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 632, "executed_branches": [], "missing_branches": []}, "SegmentArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [], "missing_branches": []}, "DurableAuditStore": {"executed_lines": [783, 784, 785, 786, 787, 788, 789, 796, 797, 800, 801, 802, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 771, "executed_branches": [[800, 801], [800, 802], [818, 819], [818, 820], [829, 830], [829, 831], [833, 834], [833, 835]], "missing_branches": []}, "LocalArchiveController": {"executed_lines": [850, 851, 852, 853, 854, 855, 858, 863, 864, 867, 868, 871, 872, 873, 874, 879, 880, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 902, 903, 904, 905, 914, 915, 918, 928, 929, 932, 933, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 951, 952, 953, 954, 955, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 976, 977, 983, 984, 990, 996, 997, 998, 1018, 1019, 1020, 1026, 1029, 1039, 1040, 1041, 1042, 1043, 1046, 1047, 1053, 1054, 1055, 1056, 1059, 1067], "summary": {"covered_lines": 95, "num_statements": 102, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 93.13725490196079, "percent_statements_covered_display": "93", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [869, 870, 875, 876, 934, 978, 979], "excluded_lines": [], "start_line": 838, "executed_branches": [[858, 863], [858, 871], [863, 864], [863, 867], [903, 904], [903, 905], [933, 935], [996, 997], [996, 998], [1046, -1038], [1046, 1047], [1054, 1055], [1054, 1056]], "missing_branches": [[933, 934]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 727, 728, 729, 737, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 767, 768, 771, 774, 799, 823, 838, 841, 857, 931, 1038, 1052, 1058, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079], "summary": {"covered_lines": 268, "num_statements": 296, "percent_covered": 89.30635838150289, "percent_covered_display": "89", "missing_lines": 28, "excluded_lines": 4, "percent_statements_covered": 90.54054054054055, "percent_statements_covered_display": "91", "num_branches": 50, "num_partial_branches": 3, "covered_branches": 41, "missing_branches": 9, "percent_branches_covered": 82.0, "percent_branches_covered_display": "82"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 730, 731, 732, 734], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [728, 729], [740, 741], [740, 742], [753, 754], [753, 755], [762, 763], [762, 767], [767, 768], [1072, -1070], [1072, 1073], [1073, 1074], [1073, 1075]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [728, 730], [767, -737]]}}}, "src\\quant_data_kit\\capture_v2\\synchronizers.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 180, 181, 184, 187, 188, 189, 190, 191, 192, 204, 205, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 330, 331, 332, 338, 339, 340, 341, 344, 347, 348, 349, 350, 351, 352, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 278, "num_statements": 302, "percent_covered": 93.87755102040816, "percent_covered_display": "94", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 92.05298013245033, "percent_statements_covered_display": "92", "num_branches": 90, "num_partial_branches": 0, "covered_branches": 90, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98, 250, 251, 323, 324, 422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101], [112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174], [188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341], [348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": [], "functions": {"_json_object": {"executed_lines": [48, 49, 52, 53, 54, 55, 56], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 47, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56]], "missing_branches": []}, "_received_milliseconds": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_provider_event_milliseconds": {"executed_lines": [65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [70, 71], "excluded_lines": [], "start_line": 64, "executed_branches": [[65, 66], [65, 72], [67, 65], [67, 68]], "missing_branches": []}, "_utc_event_datetime": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_price": {"executed_lines": [85, 86, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [87, 88], "excluded_lines": [], "start_line": 84, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "_quantity": {"executed_lines": [95, 96, 99, 100, 101], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [97, 98], "excluded_lines": [], "start_line": 94, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "_TrackedBook.__init__": {"executed_lines": [106, 107], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "_TrackedBook.snapshot": {"executed_lines": [110, 111, 112, 113, 114], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [[112, 113], [112, 114]], "missing_branches": []}, "_TrackedBook._snapshot_side": {"executed_lines": [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [[119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128]], "missing_branches": []}, "_TrackedBook.filter_delta": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[143, 144], [143, 145]], "missing_branches": []}, "_TrackedBook._filter_side": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "_TrackedBook.commit": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.__init__": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [[188, 189], [188, 190]], "missing_branches": []}, "BinanceBookSynchronizer.live": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_snapshot": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_update": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328], "summary": {"covered_lines": 42, "num_statements": 46, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 241, "executed_branches": [[242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301]], "missing_branches": []}, "BinanceBookSynchronizer._assert_mapping": {"executed_lines": [331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330, "executed_branches": [[340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer.__init__": {"executed_lines": [348, 349, 350, 351, 352, 363, 364], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347, "executed_branches": [[348, 349], [348, 350]], "missing_branches": []}, "OKXBookSynchronizer.live": {"executed_lines": [368], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "OKXBookSynchronizer.admit_message": {"executed_lines": [371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403]], "missing_branches": []}, "OKXBookSynchronizer._admit_item": {"executed_lines": [415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 47, "num_statements": 57, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 82.45614035087719, "percent_statements_covered_display": "82", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 409, "executed_branches": [[415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 59, 64, 75, 84, 94, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"ResyncRequired": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "Observation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "NormalizationOutcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "_TrackedBook": {"executed_lines": [106, 107, 110, 111, 112, 113, 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 138, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 181], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "BinanceBookSynchronizer": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 75, "num_statements": 79, "percent_covered": 96.11650485436893, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.9367088607595, "percent_statements_covered_display": "95", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 184, "executed_branches": [[188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer": {"executed_lines": [348, 349, 350, 351, 352, 363, 364, 368, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 79, "num_statements": 89, "percent_covered": 91.73553719008264, "percent_covered_display": "92", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.76404494382022, "percent_statements_covered_display": "89", "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 344, "executed_branches": [[348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 78, "num_statements": 88, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98], "excluded_lines": [], "start_line": 1, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\transport.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 41, 42, 43, 45, 46, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 75, 76, 77, 81, 82, 83, 84, 85, 86, 87, 91, 92, 95, 98, 99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 13, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36], "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65], [83, 84], [83, 85], [85, 86], [85, 87], [99, 100], [99, 101]], "missing_branches": [], "functions": {"HttpClient.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 22, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 26, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [28], "start_line": 28, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30], "start_line": 30, "executed_branches": [], "missing_branches": []}, "WebSocketConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 34, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient.get": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[41, 42], [41, 43]], "missing_branches": []}, "UrllibHttpClient._get": {"executed_lines": [47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [[61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection.__init__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.send": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.receive": {"executed_lines": [76, 77, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "_WebsocketsConnection.close": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "WebsocketsConnector.connect": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"HttpResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "HttpClient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 21, "executed_branches": [], "missing_branches": []}, "WebSocketConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26, 28, 30], "start_line": 25, "executed_branches": [], "missing_branches": []}, "WebSocketConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 33, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient": {"executed_lines": [41, 42, 43, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection": {"executed_lines": [70, 73, 76, 77, 81, 82, 83, 84, 85, 86, 87, 92], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "WebsocketsConnector": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\catalog.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 52, 56, 57, 58, 62, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 88, 89, 91], "summary": {"covered_lines": 58, "num_statements": 62, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]], "functions": {"DataCatalog.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32], [31, 36]], "missing_branches": []}, "DataCatalog.ensure_default_stack": {"executed_lines": [41, 42, 43, 44, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47]], "missing_branches": []}, "DataCatalog.list_stack_dependencies": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "DataCatalog.register_stack_dependency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "DataCatalog.save": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "DataCatalog.register": {"executed_lines": [65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[70, 71]], "missing_branches": [[70, 74]]}, "DataCatalog.list": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "DataCatalog.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [92, 93], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "DataCatalog": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 57, 58, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 89], "summary": {"covered_lines": 31, "num_statements": 35, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.57142857142857, "percent_statements_covered_display": "89", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "start_line": 25, "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]], "functions": {"main_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "main_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "main_catalog": {"executed_lines": [36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [55, 56, 57], "excluded_lines": [], "start_line": 35, "executed_branches": [[54, 59]], "missing_branches": [[54, 55]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 68], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [69], "excluded_lines": [], "start_line": 1, "executed_branches": [[68, -1]], "missing_branches": [[68, 69]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]]}}}, "src\\quant_data_kit\\curated.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 4, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 48, 49, 50], "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]], "functions": {"Curator.curate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_canonical": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_hash_bytes": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "_hash_file": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [[94, 95], [94, 96]], "missing_branches": []}, "_json_value": {"executed_lines": [100, 101, 102, 103, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [105], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108]], "missing_branches": [[104, 105]]}, "_dataset_segment": {"executed_lines": [112, 113, 114, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [[112, 113], [112, 114], [114, 127], [114, 128]], "missing_branches": []}, "_revision_segment": {"executed_lines": [132, 133, 134, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [], "missing_branches": []}, "_utc": {"executed_lines": [139, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[144, 145], [144, 146]], "missing_branches": []}, "_utc_text": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "_fixed_decimal": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [], "missing_branches": []}, "_fixed": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "build_session_bars": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244]], "missing_branches": []}, "_arrow_ready_bar": {"executed_lines": [248, 249, 250, 251, 252, 255, 256, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256]], "missing_branches": []}, "_snapshot_identity": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "_revision_record": {"executed_lines": [284, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [], "missing_branches": []}, "_validate_revision_record": {"executed_lines": [299, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295, "executed_branches": [[301, 302], [301, 303], [304, -295], [304, 305]], "missing_branches": []}, "_recover_missing_revision": {"executed_lines": [318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 85.18518518518519, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [320, 324], "excluded_lines": [], "start_line": 311, "executed_branches": [[319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337]], "missing_branches": [[319, 320], [323, 324]]}, "_publish_curated_snapshot": {"executed_lines": [357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [389], "excluded_lines": [], "start_line": 349, "executed_branches": [[364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399]], "missing_branches": [[388, 389]]}, "_write_curated_bars": {"executed_lines": [413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [[416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472]], "missing_branches": []}, "curate_trade_bars_from_snapshot": {"executed_lines": [524, 525, 526, 527, 528, 529, 536], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [[527, 528], [527, 529]], "missing_branches": []}, "_load_curated_snapshot": {"executed_lines": [554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652], "summary": {"covered_lines": 59, "num_statements": 61, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.72131147540983, "percent_statements_covered_display": "97", "num_branches": 36, "num_partial_branches": 2, "covered_branches": 34, "missing_branches": 2, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [620, 624], "excluded_lines": [], "start_line": 547, "executed_branches": [[556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[619, 620], [623, 624]]}, "load_curated_snapshot": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 87, 91, 99, 111, 131, 138, 149, 153, 157, 161, 247, 262, 283, 295, 311, 349, 402, 511, 547, 655], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Curator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 45, "executed_branches": [], "missing_branches": []}, "CuratedPartition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "CuratedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]]}}}, "src\\quant_data_kit\\data_lake.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 222, 223, 224, 226, 227, 229, 230, 232, 234, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017, 2020, 2023, 2024, 2026, 2027, 2028], "summary": {"covered_lines": 1066, "num_statements": 1115, "percent_covered": 94.28379287155346, "percent_covered_display": "94", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 95.60538116591928, "percent_statements_covered_display": "96", "num_branches": 372, "num_partial_branches": 32, "covered_branches": 336, "missing_branches": 36, "percent_branches_covered": 90.3225806451613, "percent_branches_covered_display": "90"}, "missing_lines": [259, 388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88], [237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266], [318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958], [1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": [[256, 259], [387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]], "functions": {"StoragePolicy.__post_init__": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "RawObjectManifest.reference": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__init__": {"executed_lines": [222, 223, 224], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__len__": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__iter__": {"executed_lines": [230, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__getitem__": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [259], "excluded_lines": [], "start_line": 234, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258]], "missing_branches": [[256, 259]]}, "EventClaimSequence.__eq__": {"executed_lines": [262, 263, 264, 265, 266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": []}, "EventClaimSequence.__repr__": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268, "executed_branches": [], "missing_branches": []}, "_canonical_json_bytes": {"executed_lines": [307], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306, "executed_branches": [], "missing_branches": []}, "_json_evidence": {"executed_lines": [318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332]], "missing_branches": []}, "_sha256_bytes": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "_sha256_file": {"executed_lines": [344, 345, 346, 347, 348], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[346, 347], [346, 348]], "missing_branches": []}, "_utc_datetime": {"executed_lines": [352, 357, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [[357, 358], [357, 359]], "missing_branches": []}, "_utc_text": {"executed_lines": [363], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "_segment": {"executed_lines": [367, 368, 369, 374, 375], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [[367, 368], [367, 369], [369, 374], [369, 375]], "missing_branches": []}, "_partition_segment": {"executed_lines": [379, 380, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381], [381, 382], [381, 383]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [387, 389, 390, 391, 392, 393], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [388], "excluded_lines": [], "start_line": 386, "executed_branches": [[387, 389]], "missing_branches": [[387, 388]]}, "_resolved_lake_root": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404]], "missing_branches": []}, "_validate_lake_path": {"executed_lines": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433], "summary": {"covered_lines": 21, "num_statements": 25, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.0, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [426, 427, 431, 432], "excluded_lines": [], "start_line": 407, "executed_branches": [[416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424]], "missing_branches": []}, "_mkdir_in_lake": {"executed_lines": [437, 442, 443, 444, 445, 446], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [], "missing_branches": []}, "_atomic_write_bytes": {"executed_lines": [451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [[455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472]], "missing_branches": []}, "_lake_lock": {"executed_lines": [477, 478, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476, "executed_branches": [], "missing_branches": []}, "_stable_staging_directory": {"executed_lines": [494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [[498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510]], "missing_branches": []}, "_tree_size": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513, "executed_branches": [[514, 515], [514, 516]], "missing_branches": []}, "_disk_probe_path": {"executed_lines": [520, 521, 522, 523], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[521, 522], [521, 523]], "missing_branches": []}, "evaluate_capacity": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526, "executed_branches": [[536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563]], "missing_branches": []}, "require_collection_capacity": {"executed_lines": [583, 591, 592, 593], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[591, 592], [591, 593]], "missing_branches": []}, "_raw_manifest_identity": {"executed_lines": [597], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "_raw_key_dir": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 614, "executed_branches": [], "missing_branches": []}, "_raw_object_dir": {"executed_lines": [630], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "_raw_tombstone_path": {"executed_lines": [642], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "_raw_deleting_dir": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "_raw_claim_path": {"executed_lines": [666], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "_raw_lock_identity": {"executed_lines": [676], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_raw_key_claim": {"executed_lines": [683, 691], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "_load_raw_key_claim": {"executed_lines": [698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [[705, 706], [705, 707], [708, 709], [708, 712]], "missing_branches": []}, "_ensure_raw_key_claim": {"executed_lines": [716, 717, 718, 719, 720, 725], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [[717, 718], [717, 719]], "missing_branches": []}, "_raw_stage_prefix": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 728, "executed_branches": [], "missing_branches": []}, "_validate_raw_manifest": {"executed_lines": [734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733, "executed_branches": [[734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760]], "missing_branches": []}, "_load_raw_from_dir": {"executed_lines": [770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792]], "missing_branches": []}, "_relocate_invalid_raw": {"executed_lines": [796, 797, 798, 799, 800, 801, 807, 808, 812], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795, "executed_branches": [], "missing_branches": []}, "_remove_staging_directory": {"executed_lines": [816, 817, 818, 819, 820], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [[818, 819], [818, 820]], "missing_branches": []}, "_recover_raw_staging": {"executed_lines": [828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [842, 849], "excluded_lines": [], "start_line": 823, "executed_branches": [[831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850]], "missing_branches": [[841, 842], [848, 849]]}, "write_raw_bytes": {"executed_lines": [869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [938, 946], "excluded_lines": [], "start_line": 858, "executed_branches": [[871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945]], "missing_branches": [[937, 938], [944, 946]]}, "_local_archive_path": {"executed_lines": [980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [989], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998]], "missing_branches": [[988, 989]]}, "_verify_archive_restore": {"executed_lines": [1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [], "missing_branches": []}, "_read_cleanup_audit": {"executed_lines": [1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [[1029, 1030], [1029, 1031]], "missing_branches": []}, "_load_archived_raw_reference": {"executed_lines": [1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1038, 1039, 1042, 1049, 1051], "excluded_lines": [], "start_line": 1034, "executed_branches": [[1041, 1043], [1050, 1052]], "missing_branches": [[1041, 1042], [1050, 1051]]}, "_validate_cleanup_receipt": {"executed_lines": [1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1055, "executed_branches": [[1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081]], "missing_branches": []}, "_finalize_raw_deleting": {"executed_lines": [1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1093, 1098, 1100, 1109, 1110, 1112], "excluded_lines": [], "start_line": 1084, "executed_branches": [[1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113]], "missing_branches": [[1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112]]}, "validate_raw_reference": {"executed_lines": [1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1132], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138]], "missing_branches": [[1131, 1132]]}, "load_raw_object": {"executed_lines": [1145, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [], "missing_branches": []}, "cleanup_archived_raw_object": {"executed_lines": [1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.53968253968254, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 86.04651162790698, "percent_statements_covered_display": "86", "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1175, 1176, 1179, 1181, 1190, 1203], "excluded_lines": [], "start_line": 1152, "executed_branches": [[1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217]], "missing_branches": [[1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218]]}, "_event_schema_id": {"executed_lines": [1239, 1240, 1241, 1242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "_stream_key": {"executed_lines": [1246, 1247, 1252, 1253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1245, "executed_branches": [], "missing_branches": []}, "_arrow_ready": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [1261], "excluded_lines": [], "start_line": 1256, "executed_branches": [[1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265]], "missing_branches": [[1260, 1261]]}, "_validated_table": {"executed_lines": [1270, 1271, 1274, 1275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1269, "executed_branches": [], "missing_branches": []}, "_normalized_snapshot_payload": {"executed_lines": [1287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1278, "executed_branches": [], "missing_branches": []}, "_validate_quarantine_batch": {"executed_lines": [1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1299, "executed_branches": [[1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318]], "missing_branches": []}, "_event_claim_reference": {"executed_lines": [1322, 1323, 1324, 1327, 1335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1321, "executed_branches": [], "missing_branches": []}, "_event_claim_path": {"executed_lines": [1345], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1344, "executed_branches": [], "missing_branches": []}, "_event_claim_payload": {"executed_lines": [1355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1354, "executed_branches": [], "missing_branches": []}, "_validate_event_claim_reference": {"executed_lines": [1366, 1374, 1378, 1379, 1380], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1377], "excluded_lines": [], "start_line": 1362, "executed_branches": [[1374, 1378], [1378, 1379], [1378, 1380]], "missing_branches": [[1374, 1377]]}, "_validate_event_claim": {"executed_lines": [1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1383, "executed_branches": [[1392, 1395], [1392, 1396]], "missing_branches": []}, "_recover_missing_event_claim": {"executed_lines": [1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427]], "missing_branches": []}, "_publish_event_claims": {"executed_lines": [1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1436, "executed_branches": [[1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460]], "missing_branches": []}, "_write_quarantine": {"executed_lines": [1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [1496, 1497, 1498], "excluded_lines": [], "start_line": 1463, "executed_branches": [[1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499]], "missing_branches": [[1495, 1496], [1496, 1495], [1496, 1497]]}, "_write_normalized_events_legacy": {"executed_lines": [1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761], "summary": {"covered_lines": 86, "num_statements": 98, "percent_covered": 84.55882352941177, "percent_covered_display": "85", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88", "num_branches": 38, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 9, "percent_branches_covered": 76.3157894736842, "percent_branches_covered_display": "76"}, "missing_lines": [1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751], "excluded_lines": [], "start_line": 1525, "executed_branches": [[1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757]], "missing_branches": [[1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751]]}, "write_normalized_events": {"executed_lines": [1780, 1782], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [], "missing_branches": []}, "write_normalized_batches": {"executed_lines": [1804, 1806], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [], "missing_branches": []}, "_safe_snapshot_partition": {"executed_lines": [1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1825], "excluded_lines": [], "start_line": 1817, "executed_branches": [[1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826]], "missing_branches": [[1824, 1825]]}, "_load_normalized_snapshot": {"executed_lines": [1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936], "summary": {"covered_lines": 62, "num_statements": 64, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 2, "covered_branches": 36, "missing_branches": 2, "percent_branches_covered": 94.73684210526316, "percent_branches_covered_display": "95"}, "missing_lines": [1888, 1912], "excluded_lines": [], "start_line": 1829, "executed_branches": [[1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936]], "missing_branches": [[1887, 1888], [1911, 1912]]}, "load_normalized_snapshot": {"executed_lines": [1940], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1939, "executed_branches": [], "missing_branches": []}, "read_normalized_events": {"executed_lines": [1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1943, "executed_branches": [[1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": []}, "DuckDBSnapshot.__init__": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1966, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988]], "missing_branches": []}, "DuckDBSnapshot.query": {"executed_lines": [1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1990, "executed_branches": [[1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBSnapshot.close": {"executed_lines": [2011], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2010, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__enter__": {"executed_lines": [2014], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2013, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__exit__": {"executed_lines": [2017], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2016, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.__init__": {"executed_lines": [2024], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2023, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.open_snapshot": {"executed_lines": [2027, 2028], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 316, 339, 343, 351, 362, 366, 378, 386, 396, 407, 436, 449, 475, 476, 485, 486, 513, 519, 526, 574, 596, 614, 629, 641, 653, 665, 675, 682, 697, 715, 728, 733, 763, 795, 815, 823, 858, 979, 1001, 1022, 1034, 1055, 1084, 1117, 1141, 1152, 1238, 1245, 1256, 1269, 1278, 1299, 1321, 1344, 1354, 1362, 1383, 1403, 1436, 1463, 1525, 1769, 1793, 1817, 1829, 1939, 1943, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CollectionStoppedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "StoragePolicy": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "CapacityDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "RawObjectManifest": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "RawObjectReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "RawKeyClaim": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "ArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "PartitionManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [], "missing_branches": []}, "EventClaimReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [], "missing_branches": []}, "EventClaimShardManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "EventClaimIndexManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "L2CheckpointManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "EventClaimSequence": {"executed_lines": [222, 223, 224, 227, 230, 232, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 262, 263, 264, 265, 266, 269], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.22641509433963, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [259], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": [[256, 259]]}, "NormalizedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "QuarantineEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [], "missing_branches": []}, "NormalizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2011, 2014, 2017], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1963, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBCatalog": {"executed_lines": [2024, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2020, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 992, "num_statements": 1040, "percent_covered": 93.95924308588064, "percent_covered_display": "94", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 95.38461538461539, "percent_statements_covered_display": "95", "num_branches": 334, "num_partial_branches": 31, "covered_branches": 299, "missing_branches": 35, "percent_branches_covered": 89.52095808383234, "percent_branches_covered_display": "90"}, "missing_lines": [388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "start_line": 1, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": [[387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]]}}}, "src\\quant_data_kit\\domain_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 38, "num_partial_branches": 0, "covered_branches": 38, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134], [161, 162], [161, 167], [173, 174], [173, 175], [195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": [], "functions": {"_required_text": {"executed_lines": [49, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 51]], "missing_branches": []}, "_optional_text": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "_validate_knowledge_interval": {"executed_lines": [62, 63, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [[68, 69], [68, 70]], "missing_branches": []}, "InstrumentSpec.__post_init__": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping.__post_init__": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession.__post_init__": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "dataclass_payload": {"executed_lines": [218, 219, 242, 243, 252, 253, 264], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [[218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}, "fixed_point_payload": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_time": {"executed_lines": [272], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_optional_time": {"executed_lines": [276], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 54, 58, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 267, 271, 275], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AssetClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "MarginMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "SessionPhase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "InstrumentSpec": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}}}, "src\\quant_data_kit\\exceptions.py": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"QuantDataKitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [], "missing_branches": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "ProviderError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\fixed_point.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 23, 25, 27, 29, 32, 33, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 56, 57], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]], "functions": {"FixedPoint.__post_init__": {"executed_lines": [23, 25, 27, 29], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [24, 26, 28, 30], "excluded_lines": [], "start_line": 22, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30]]}, "FixedPoint.from_decimal": {"executed_lines": [41, 42, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [43], "excluded_lines": [], "start_line": 33, "executed_branches": [[42, 44], [46, 47], [46, 48]], "missing_branches": [[42, 43]]}, "FixedPoint.to_decimal": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_positive": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_non_negative": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FixedPoint": {"executed_lines": [23, 25, 27, 29, 41, 42, 44, 45, 46, 47, 48, 51, 54, 57], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "start_line": 16, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\l2_replay.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 213, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 280, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 408, 409, 414, 415, 416, 420, 421, 422, 423, 424, 425, 426, 427, 428, 430, 431, 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, 454, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 283, "num_statements": 289, "percent_covered": 97.72151898734177, "percent_covered_display": "98", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 97.92387543252595, "percent_statements_covered_display": "98", "num_branches": 106, "num_partial_branches": 1, "covered_branches": 103, "missing_branches": 3, "percent_branches_covered": 97.16981132075472, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443], [478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": [[205, 208], [272, 273], [272, 275]], "functions": {"_canonical": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "_level": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.initialized": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.sequence": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply": {"executed_lines": [96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101]], "missing_branches": []}, "L2BookReconstructor.apply_snapshot": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_snapshot_state": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply_delta": {"executed_lines": [113, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_delta_state": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_without_checkpoint": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126], [126, 127], [126, 129]], "missing_branches": []}, "L2BookReconstructor._apply_validated_without_checkpoint": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[134, 135], [134, 137], [137, 138], [137, 140]], "missing_branches": []}, "L2BookReconstructor._apply_validated_snapshot_state": {"executed_lines": [143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [[144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160]], "missing_branches": []}, "L2BookReconstructor._apply_validated_delta_state": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [208], "excluded_lines": [], "start_line": 170, "executed_branches": [[171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206]], "missing_branches": [[205, 208]]}, "L2BookReconstructor._apply_validated_uniform_upsert_batch": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278], "summary": {"covered_lines": 22, "num_statements": 27, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 81.48148148148148, "percent_statements_covered_display": "81", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259]], "missing_branches": [[272, 273], [272, 275]]}, "L2BookReconstructor._apply_validated_atomic_delta_group": {"executed_lines": [304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 34, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390]], "missing_branches": []}, "L2BookReconstructor._assert_identity": {"executed_lines": [409, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408, "executed_branches": [[415, -408], [415, 416]], "missing_branches": []}, "L2BookReconstructor._assert_time_advances": {"executed_lines": [421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420, "executed_branches": [[421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428]], "missing_branches": []}, "L2BookReconstructor._assert_book_valid": {"executed_lines": [435, 436, 437, 438], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431, "executed_branches": [[435, 436], [435, 437], [437, -430], [437, 438]], "missing_branches": []}, "L2BookReconstructor.checkpoint": {"executed_lines": [441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443]], "missing_branches": []}, "_parsed_timestamp": {"executed_lines": [468], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [], "missing_branches": []}, "replay_l2": {"executed_lines": [477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 62, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 471], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"L2ReplayError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "ReconstructedLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "BookCheckpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "L2ReplayResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 89, 93, 96, 97, 98, 99, 100, 101, 104, 105, 108, 109, 110, 113, 114, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 409, 414, 415, 416, 421, 422, 423, 424, 425, 426, 427, 428, 435, 436, 437, 438, 441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 192, "num_statements": 198, "percent_covered": 96.89655172413794, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 92, "num_partial_branches": 1, "covered_branches": 89, "missing_branches": 3, "percent_branches_covered": 96.73913043478261, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 74, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443]], "missing_branches": [[205, 208], [272, 273], [272, 275]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}}}, "src\\quant_data_kit\\market_clock_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 16, 18, 19, 21, 22, 23, 26, 27, 29, 30, 31, 40, 41, 42, 44, 53], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]], "functions": {"MarketClock.__init__": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [17, 20], "excluded_lines": [], "start_line": 15, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21]]}, "MarketClock.session_at": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "MarketClock.trading_day_at": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "MarketClock.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "MarketClock.next_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": [[60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MarketClock": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27, 30, 31, 41, 42], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 51.515151515151516, "percent_covered_display": "52", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 14, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\market_events_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 97, 98, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 271, 272, 273, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 264, "num_statements": 265, "percent_covered": 99.45205479452055, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.62264150943396, "percent_statements_covered_display": "99", "num_branches": 100, "num_partial_branches": 1, "covered_branches": 99, "missing_branches": 1, "percent_branches_covered": 99.0, "percent_branches_covered_display": "99"}, "missing_lines": [160], "excluded_lines": [], "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84], [98, -95], [98, 103], [120, 121], [120, 122], [122, -114], [122, 123], [137, -133], [137, 138], [157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186], [198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214], [228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241], [253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298], [310, -307], [310, 311], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": [[159, 160]], "functions": {"_required_text": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[34, 35], [34, 36]], "missing_branches": []}, "_positive": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, -39], [40, 41]], "missing_branches": []}, "_non_negative": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, -44], [45, 46]], "missing_branches": []}, "_MarketEventBase.__post_init__": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel.__post_init__": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent.__post_init__": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent.__post_init__": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent.__post_init__": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 153, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent.__post_init__": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent.__post_init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent.__post_init__": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent.__post_init__": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent.__post_init__": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent.__post_init__": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "_time": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [], "missing_branches": []}, "_base_payload": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331, "executed_branches": [], "missing_branches": []}, "_level_payload": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346, "executed_branches": [], "missing_branches": []}, "market_event_payload": {"executed_lines": [355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354, "executed_branches": [[356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 39, 44, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 331, 346, 354], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AggressorSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "BookSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "BookAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [], "missing_branches": []}, "_MarketEventBase": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 142, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 147, "num_statements": 147, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}}}, "src\\quant_data_kit\\normalized_v3.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 236, 237, 238, 239, 240, 242, 243, 245, 246, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 327, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 385, 386, 387, 388, 389, 390, 391, 393, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 423, 424, 425, 426, 429, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 468, 469, 470, 471, 473, 474, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 622, 623, 624, 625, 627, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 643, 644, 645, 646, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1415, "num_statements": 1454, "percent_covered": 95.55444555444555, "percent_covered_display": "96", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 97.31774415405778, "percent_statements_covered_display": "97", "num_branches": 548, "num_partial_branches": 46, "covered_branches": 498, "missing_branches": 50, "percent_branches_covered": 90.87591240875912, "percent_branches_covered_display": "91"}, "missing_lines": [363, 419, 427, 709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [211, -208], [211, 212], [215, 216], [215, 217], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381], [401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377], [418, 419], [426, 427], [506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]], "functions": {"_native_validator": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "_validate_l2_semantics": {"executed_lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 30, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149]], "missing_branches": []}, "_validate_event_record": {"executed_lines": [153, 154, 155, 156, 157, 158, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [[157, 158], [157, 160]], "missing_branches": []}, "_cached_timestamp": {"executed_lines": [165], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "_cached_date": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "_cached_utc_text": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_cached_date_text": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_arrow_ready_rows": {"executed_lines": [184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196]], "missing_branches": []}, "_InputSpool.__init__": {"executed_lines": [203, 204, 205, 206], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "_InputSpool.append": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [[211, -208], [211, 212]], "missing_branches": []}, "_InputSpool.flush": {"executed_lines": [215, 216, 217, 218, 226, 227, 231, 232, 233, 234], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214, "executed_branches": [[215, 216], [215, 217]], "missing_branches": []}, "_InputSpool.close": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "_InputSpool.__enter__": {"executed_lines": [243], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "_InputSpool.__exit__": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [], "missing_branches": []}, "_iter_spooled_records": {"executed_lines": [250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249, "executed_branches": [[251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260]], "missing_branches": []}, "_has_non_finite": {"executed_lines": [264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [[264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270]], "missing_branches": []}, "_OpenPartition.append": {"executed_lines": [289, 294, 295, 296, 297], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288, "executed_branches": [[294, 295], [294, 296]], "missing_branches": []}, "_OpenPartition.flush": {"executed_lines": [300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301], [300, 302], [306, 307], [313, 314]], "missing_branches": [[306, 312], [313, 321]]}, "_OpenPartition.append_record_batch": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [[334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354]], "missing_branches": []}, "_OpenPartition._flush_arrow_buffer": {"executed_lines": [357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [363], "excluded_lines": [], "start_line": 356, "executed_branches": [[357, 358], [357, 359], [362, 364], [364, 365], [364, 372]], "missing_branches": [[362, 363]]}, "_OpenPartition.close": {"executed_lines": [378, 379, 380, 381, 382], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[380, 381]], "missing_branches": [[380, -377]]}, "_PartitionSet.__init__": {"executed_lines": [387, 388, 389, 390, 391], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386, "executed_branches": [], "missing_branches": []}, "_PartitionSet.append": {"executed_lines": [394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [419], "excluded_lines": [], "start_line": 393, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421]], "missing_branches": [[418, 419]]}, "_PartitionSet.flush_all": {"executed_lines": [424, 425, 426], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [427], "excluded_lines": [], "start_line": 423, "executed_branches": [[424, 425], [424, 426], [426, -423]], "missing_branches": [[426, 427]]}, "_PartitionSet.append_record_batch": {"executed_lines": [440, 445, 446, 447, 448, 452, 459, 460, 461, 462], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429, "executed_branches": [[447, 448], [447, 460], [460, 461], [460, 462]], "missing_branches": []}, "_PartitionSet.close": {"executed_lines": [469, 470, 471], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [[470, -468], [470, 471]], "missing_branches": []}, "_PartitionSet.paths": {"executed_lines": [474], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473, "executed_branches": [], "missing_branches": []}, "_partition_identity": {"executed_lines": [487], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "_streaming_stage": {"executed_lines": [497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [], "excluded_lines": [], "start_line": 496, "executed_branches": [[499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521]], "missing_branches": [[506, 499], [518, 520], [520, -495]]}, "_sql_text": {"executed_lines": [525], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [], "missing_branches": []}, "_sql_path_list": {"executed_lines": [529], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "_sql_identifier": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "_canonical_sql_value": {"executed_lines": [537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536, "executed_branches": [[537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563]], "missing_branches": []}, "_canonical_row_sql": {"executed_lines": [567, 568, 569, 575], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[568, 569], [568, 575]], "missing_branches": []}, "_canonical_event_sql": {"executed_lines": [579], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578, "executed_branches": [], "missing_branches": []}, "_sort_partition": {"executed_lines": [589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 588, "executed_branches": [[589, 590], [589, 591], [609, 610], [609, 614], [614, 615]], "missing_branches": [[614, 616]]}, "_JsonArrayDigest.__init__": {"executed_lines": [622, 623, 624, 625], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "_JsonArrayDigest.update": {"executed_lines": [628, 629, 630, 635, 636, 637, 638, 639, 640, 641], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 627, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_JsonArrayDigest.hexdigest": {"executed_lines": [644, 645, 646], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 643, "executed_branches": [], "missing_branches": []}, "_logical_rows": {"executed_lines": [650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 649, "executed_branches": [[653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662]], "missing_branches": [[657, 655], [661, 659]]}, "_contains_floating_type": {"executed_lines": [668, 669, 670, 671, 672, 673, 674], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674]], "missing_branches": []}, "_scan_partition": {"executed_lines": [681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "95", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [709, 717], "excluded_lines": [], "start_line": 677, "executed_branches": [[684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727]], "missing_branches": [[708, 709], [716, 717]]}, "_scan_partition_arrow_ipc": {"executed_lines": [733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 732, "executed_branches": [[742, 743], [742, 747], [747, 748], [747, 753]], "missing_branches": []}, "_partition_manifests": {"executed_lines": [765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [782, 790], "excluded_lines": [], "start_line": 758, "executed_branches": [[766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791]], "missing_branches": [[781, 782], [789, 790]]}, "_duplicate_event_ids": {"executed_lines": [810, 811, 812, 813, 814, 820, 822], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 809, "executed_branches": [[810, 811], [810, 812]], "missing_branches": []}, "_publish_quarantine_file": {"executed_lines": [834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [852, 873], "excluded_lines": [], "start_line": 825, "executed_branches": [[834, 835], [834, 836], [851, 853]], "missing_branches": [[851, 852]]}, "_rebuild_after_exclusions": {"executed_lines": [886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905]], "missing_branches": [[886, 888], [904, 906]]}, "_claim_database": {"executed_lines": [927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997], "summary": {"covered_lines": 25, "num_statements": 29, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.20689655172414, "percent_statements_covered_display": "86", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [991, 992, 993, 994], "excluded_lines": [], "start_line": 922, "executed_branches": [[940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997]], "missing_branches": [[990, 991], [992, 993], [992, 994]]}, "_claim_shard_manifests": {"executed_lines": [1003, 1004], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1000, "executed_branches": [], "missing_branches": []}, "_claim_multiset_manifest_sql": {"executed_lines": [1015, 1018, 1022, 1023, 1031], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1031]], "missing_branches": []}, "_export_claim_index": {"executed_lines": [1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1053, 1066], "excluded_lines": [], "start_line": 1044, "executed_branches": [[1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067]], "missing_branches": [[1052, 1053], [1065, 1066]]}, "_claim_select_sql": {"executed_lines": [1092, 1093, 1094], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_claim_file_order": {"executed_lines": [1114, 1115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1113, "executed_branches": [], "missing_branches": []}, "_claim_shard_manifests_from_paths": {"executed_lines": [1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1128], "excluded_lines": [], "start_line": 1118, "executed_branches": [[1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130]], "missing_branches": [[1127, 1128]]}, "_write_claim_index_manifest": {"executed_lines": [1158, 1165, 1176, 1177], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1151, "executed_branches": [], "missing_branches": []}, "_build_claim_index_files": {"executed_lines": [1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1197, 1218, 1242], "excluded_lines": [], "start_line": 1183, "executed_branches": [[1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256]], "missing_branches": [[1196, 1197], [1217, 1218], [1241, 1242]]}, "_claim_index_root": {"executed_lines": [1260], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1259, "executed_branches": [], "missing_branches": []}, "_claim_index_files": {"executed_lines": [1264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "_validate_claim_index": {"executed_lines": [1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 94.52054794520548, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [1275, 1327], "excluded_lines": [], "start_line": 1267, "executed_branches": [[1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332]], "missing_branches": [[1274, 1275], [1326, 1327]]}, "_publish_or_validate_claim_index": {"executed_lines": [1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1335, "executed_branches": [[1345, 1346], [1345, 1367]], "missing_branches": []}, "_snapshot_payload_v3": {"executed_lines": [1389], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1378, "executed_branches": [], "missing_branches": []}, "_index_for_snapshot": {"executed_lines": [1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1431], "excluded_lines": [], "start_line": 1404, "executed_branches": [[1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462]], "missing_branches": [[1430, 1431]]}, "iter_event_claims_v3": {"executed_lines": [1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1466, "executed_branches": [[1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498]], "missing_branches": []}, "_historical_index_paths": {"executed_lines": [1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1512, 1560], "excluded_lines": [], "start_line": 1503, "executed_branches": [[1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562]], "missing_branches": [[1511, 1512], [1559, 1560], [1561, 1563]]}, "_assert_lake_wide_claims": {"executed_lines": [1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1575, "executed_branches": [[1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599]], "missing_branches": []}, "load_normalized_snapshot_v3": {"executed_lines": [1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755], "summary": {"covered_lines": 76, "num_statements": 78, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97", "num_branches": 42, "num_partial_branches": 2, "covered_branches": 40, "missing_branches": 2, "percent_branches_covered": 95.23809523809524, "percent_branches_covered_display": "95"}, "missing_lines": [1622, 1706], "excluded_lines": [], "start_line": 1602, "executed_branches": [[1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746]], "missing_branches": [[1621, 1622], [1705, 1706]]}, "_all_duplicate_ids_from_spool": {"executed_lines": [1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1779, "executed_branches": [[1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789]], "missing_branches": []}, "_validate_stream_record": {"executed_lines": [1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [[1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837]], "missing_branches": []}, "_revalidate_streams_after_duplicate_exclusions": {"executed_lines": [1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1841, "executed_branches": [[1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882]], "missing_branches": []}, "_all_true": {"executed_lines": [1899, 1900], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1898, "executed_branches": [], "missing_branches": []}, "_require_all": {"executed_lines": [1904, 1905], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1903, "executed_branches": [[1904, -1903], [1904, 1905]], "missing_branches": []}, "_uniform_value": {"executed_lines": [1909, 1910, 1911, 1912, 1913, 1914], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1908, "executed_branches": [[1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914]], "missing_branches": []}, "_validate_fixed_point_array": {"executed_lines": [1918, 1919, 1920, 1921, 1922, 1925], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1917, "executed_branches": [[1920, 1921], [1920, 1922]], "missing_branches": []}, "_validate_common_arrow_batch": {"executed_lines": [1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [1938, 1939, 1998], "excluded_lines": [], "start_line": 1931, "executed_branches": [[1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999]], "missing_branches": [[1997, 1998]]}, "_logical_batch_rows": {"executed_lines": [2009], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2008, "executed_branches": [], "missing_branches": []}, "_sort_keys": {"executed_lines": [2013, 2021, 2022, 2023], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2012, "executed_branches": [[2021, 2022], [2021, 2023]], "missing_branches": []}, "_validate_l2_delta_columns": {"executed_lines": [2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "_encoded_l2_group_ranges": {"executed_lines": [2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2067, "executed_branches": [[2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088]], "missing_branches": []}, "_try_apply_atomic_l2_delta_batch": {"executed_lines": [2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 94.20289855072464, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [2137, 2178], "excluded_lines": [], "start_line": 2096, "executed_branches": [[2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174]], "missing_branches": [[2136, 2137], [2173, 2178]]}, "_try_apply_uniform_l2_delta_batch": {"executed_lines": [2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [2241, 2264], "excluded_lines": [], "start_line": 2195, "executed_branches": [[2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268]], "missing_branches": [[2240, 2241], [2263, 2264]]}, "_validate_record_batch": {"executed_lines": [2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2282, "executed_branches": [[2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326]], "missing_branches": []}, "_iter_record_batches": {"executed_lines": [2332, 2333, 2334, 2335, 2336, 2337], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2329, "executed_branches": [[2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337]], "missing_branches": []}, "_l2_group_key": {"executed_lines": [2341, 2342, 2343], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2340, "executed_branches": [], "missing_branches": []}, "_concat_record_batches": {"executed_lines": [2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2351, "executed_branches": [[2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359]], "missing_branches": []}, "_iter_atomic_l2_record_batches": {"executed_lines": [2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 98.03921568627452, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 2368, "executed_branches": [[2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415]], "missing_branches": [[2408, 2410]]}, "_finalize_strict_batch_snapshot": {"executed_lines": [2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 97.77777777777777, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 2418, "executed_branches": [[2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528]], "missing_branches": [[2527, 2529]]}, "write_normalized_batches_v3": {"executed_lines": [2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647], "summary": {"covered_lines": 48, "num_statements": 49, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.95918367346938, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [2646], "excluded_lines": [], "start_line": 2543, "executed_branches": [[2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647]], "missing_branches": [[2645, 2646]]}, "write_normalized_events_v3": {"executed_lines": [2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 110, "num_statements": 115, "percent_covered": 93.08176100628931, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96", "num_branches": 44, "num_partial_branches": 4, "covered_branches": 38, "missing_branches": 6, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}, "missing_lines": [2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 2662, "executed_branches": [[2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 107, 152, 163, 164, 168, 169, 173, 174, 178, 179, 183, 201, 202, 208, 214, 236, 242, 245, 249, 263, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 495, 496, 524, 528, 532, 536, 566, 578, 588, 620, 621, 627, 643, 649, 667, 677, 732, 758, 809, 825, 876, 922, 1000, 1014, 1044, 1091, 1113, 1118, 1151, 1183, 1259, 1263, 1267, 1335, 1378, 1404, 1466, 1503, 1575, 1602, 1779, 1793, 1841, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1903, 1908, 1917, 1931, 2008, 2012, 2026, 2067, 2096, 2195, 2282, 2329, 2340, 2351, 2368, 2418, 2543, 2662], "summary": {"covered_lines": 158, "num_statements": 158, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"_ClaimIndexMissingError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "_InputSpool": {"executed_lines": [203, 204, 205, 206, 209, 210, 211, 212, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 237, 238, 239, 240, 243, 246], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[211, -208], [211, 212], [215, 216], [215, 217]], "missing_branches": []}, "_OpenPartition": {"executed_lines": [289, 294, 295, 296, 297, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 378, 379, 380, 381, 382], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 94.25287356321839, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [363], "excluded_lines": [], "start_line": 274, "executed_branches": [[294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377]]}, "_PartitionSet": {"executed_lines": [387, 388, 389, 390, 391, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 424, 425, 426, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 469, 470, 471, 474], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [419, 427], "excluded_lines": [], "start_line": 385, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471]], "missing_branches": [[418, 419], [426, 427]]}, "_JsonArrayDigest": {"executed_lines": [622, 623, 624, 625, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 644, 645, 646], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_ArrowBatchIdentity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1890, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 208, 214, 236, 242, 245, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 627, 643, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1280, "num_statements": 1316, "percent_covered": 95.57522123893806, "percent_covered_display": "96", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 97.26443768996961, "percent_statements_covered_display": "97", "num_branches": 492, "num_partial_branches": 40, "covered_branches": 448, "missing_branches": 44, "percent_branches_covered": 91.0569105691057, "percent_branches_covered_display": "91"}, "missing_lines": [709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 1, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}}}, "src\\quant_data_kit\\panel.py": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]], "functions": {"merge_earnings_to_panel": {"executed_lines": [10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [11, 12, 13, 27, 28], "excluded_lines": [], "start_line": 8, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30]], "missing_branches": [[10, 11], [26, 27]]}, "merge_northbound_to_panel": {"executed_lines": [44, 49, 54], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45, 46, 47], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 49]], "missing_branches": [[44, 45]]}, "add_industry_relative_strength": {"executed_lines": [64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [65, 66, 67], "excluded_lines": [], "start_line": 57, "executed_branches": [[64, 69]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 8, 43, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]]}}}, "src\\quant_data_kit\\process_lock.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": [], "functions": {"_acquire_windows_lock": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [[29, 30], [29, 31]], "missing_branches": []}, "_release_windows_lock": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "_acquire_posix_lock": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "_release_posix_lock": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "_windows_file_lock": {"executed_lines": [73, 75, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_posix_file_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_platform_lock_backend": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "process_file_lock": {"executed_lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 34, 43, 62, 71, 72, 93, 94, 114, 120, 126, 127], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\_fetch.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]], "functions": {"fetch_with_retries": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26], "excluded_lines": [], "start_line": 12, "executed_branches": [[20, 21]], "missing_branches": [[20, 26]]}, "fetch_symbols_parallel": {"executed_lines": [37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 55.0, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 29, "executed_branches": [[38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[38, 42], [44, 45], [44, 47], [47, 48]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]]}}}, "src\\quant_data_kit\\providers\\_network.py": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "executed_branches": [], "missing_branches": [[11, -6], [11, 12]], "functions": {"configure_network": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}, "": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}}}, "src\\quant_data_kit\\providers\\_symbols.py": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": [[12, 13], [12, 14]], "functions": {"normalize_symbol": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "to_market_symbol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}, "": {"executed_lines": [3, 6, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}}}, "src\\quant_data_kit\\providers\\akshare.py": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\benchmark.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [[26, 27], [26, 29]], "functions": {"fetch_hs300_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}}}, "src\\quant_data_kit\\providers\\earnings_forecast.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]], "functions": {"_score_forecast_type": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44], [44, 45]], "missing_branches": [[43, 46], [44, 43]]}, "_quarter_end_dates": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[53, 54], [53, 58], [54, 53], [54, 55], [56, 57]], "missing_branches": [[56, 54]]}, "fetch_earnings_forecasts": {"executed_lines": [68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 20, "num_statements": 33, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 60.60606060606061, "percent_statements_covered_display": "61", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 6, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 61, "executed_branches": [[69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 49, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}}}, "src\\quant_data_kit\\providers\\fundamentals.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]], "functions": {"_fetch_one_fundamental": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}, "fetch_fundamentals": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76, 77, 79, 87], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "fetch_fundamentals._task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}}}, "src\\quant_data_kit\\providers\\industry.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]], "functions": {"fetch_industry_returns": {"executed_lines": [27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 14, "num_statements": 27, "percent_covered": 51.42857142857143, "percent_covered_display": "51", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 51.851851851851855, "percent_statements_covered_display": "52", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}}}, "src\\quant_data_kit\\providers\\northbound.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]], "functions": {"_fetch_one_northbound": {"executed_lines": [25, 26, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 8, "num_statements": 24, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60], "excluded_lines": [], "start_line": 20, "executed_branches": [[25, 26]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53]]}, "fetch_northbound_holdings": {"executed_lines": [77, 79, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 71, "executed_branches": [[86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[86, 90], [92, 93], [92, 95], [96, 97]]}, "fetch_northbound_holdings._task": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [82, 83, 84], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 71], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]]}}}, "src\\quant_data_kit\\providers\\prices.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]], "functions": {"_fetch_one_price": {"executed_lines": [37, 38, 76, 77, 78, 79], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 30, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}, "fetch_daily_prices": {"executed_lines": [91, 92, 94, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "fetch_daily_prices._task": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 82], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}}}, "src\\quant_data_kit\\providers\\universe.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]], "functions": {"fetch_hs300_constituents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": [[21, 22], [21, 24]]}, "fetch_hs300_constituents_history": {"executed_lines": [41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 20, "num_statements": 75, "percent_covered": 24.031007751937985, "percent_covered_display": "24", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 26.666666666666668, "percent_statements_covered_display": "27", "num_branches": 54, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 43, "percent_branches_covered": 20.37037037037037, "percent_branches_covered_display": "20"}, "missing_lines": [44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 33, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}}}, "src\\quant_data_kit\\schemas_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]], "functions": {"_field": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_object_schema": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_event_schema": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "_timestamp": {"executed_lines": [394, 395, 397], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [396], "excluded_lines": [], "start_line": 393, "executed_branches": [[395, 397]], "missing_branches": [[395, 396]]}, "_fixed_value": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400, "executed_branches": [], "missing_branches": []}, "_require_positive": {"executed_lines": [406, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405, "executed_branches": [[407, 408], [407, 409]], "missing_branches": []}, "_require_non_negative": {"executed_lines": [413, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412, "executed_branches": [[414, 415], [414, 416]], "missing_branches": []}, "_validate_event_semantics": {"executed_lines": [420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500], "summary": {"covered_lines": 78, "num_statements": 80, "percent_covered": 96.57534246575342, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.5, "percent_statements_covered_display": "98", "num_branches": 66, "num_partial_branches": 3, "covered_branches": 63, "missing_branches": 3, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [426, 468], "excluded_lines": [], "start_line": 419, "executed_branches": [[423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500]], "missing_branches": [[425, 426], [467, 468], [499, -419]]}, "_validate_record_semantics": {"executed_lines": [504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525]], "missing_branches": [[524, -503]]}, "_validate_knowledge_interval": {"executed_lines": [529, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [[529, -528], [529, 532]], "missing_branches": []}, "get_arrow_schema": {"executed_lines": [536, 537, 538, 539, 540, 541], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 538]], "missing_branches": []}, "get_json_schema": {"executed_lines": [545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546], [545, 547]], "missing_branches": []}, "_compiled_json_validator": {"executed_lines": [558, 559, 560, 561, 564], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 554, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "validate_json_record": {"executed_lines": [572, 573, 574, 575, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "validate_event_stream": {"executed_lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [[587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623]], "missing_branches": []}, "validate_arrow_table": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[632, -626], [632, 633]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 52, 64, 69, 187, 196, 206, 207, 208, 211, 221, 234, 290, 297, 380, 393, 400, 405, 412, 419, 503, 528, 535, 544, 553, 554, 567, 580, 626], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "start_line": 1, "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]]}}}, "src\\quant_data_kit\\snapshots.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]], "functions": {"_canonical_frame_bytes": {"executed_lines": [37, 38, 39, 40, 43], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[39, 40]], "missing_branches": [[39, 43]]}, "frame_sha256": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "schema_sha256": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "create_snapshot": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [71, 96, 99], "excluded_lines": [], "start_line": 56, "executed_branches": [[70, 72], [94, 95], [94, 101], [95, 97], [98, 100]], "missing_branches": [[70, 71], [95, 96], [98, 99]]}, "load_snapshot": {"executed_lines": [110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [114], "excluded_lines": [], "start_line": 109, "executed_branches": [[113, 115], [116, 117], [116, 118]], "missing_branches": [[113, 114]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 46, 50, 56, 109], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]]}}}, "src\\quant_data_kit\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]], "functions": {"save_parquet": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "load_parquet": {"executed_lines": [38, 39, 41], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [40], "excluded_lines": [], "start_line": 37, "executed_branches": [[39, 41]], "missing_branches": [[39, 40]]}, "_date_bounds": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, 47]], "missing_branches": [[45, 46]]}, "build_manifest": {"executed_lines": [62, 63, 64, 67, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "write_manifest": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "save_manifest": {"executed_lines": [107, 108, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "load_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [124, 125, 126], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "parse_date": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "cache_covers_range": {"executed_lines": [140, 142, 143, 144, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [141], "excluded_lines": [], "start_line": 133, "executed_branches": [[140, 142]], "missing_branches": [[140, 141]]}, "should_refresh_cache": {"executed_lines": [155, 156, 158, 159], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 158]], "missing_branches": [[156, 157]]}, "incremental_start_date": {"executed_lines": [163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [168], "excluded_lines": [], "start_line": 162, "executed_branches": [[164, 165], [164, 166], [167, 169]], "missing_branches": [[167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44, 51, 87, 95, 123, 129, 133, 148, 162], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DataManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]]}}}, "src\\quant_data_kit\\temporal.py": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]], "functions": {"_normalize_times": {"executed_lines": [28, 29, 30, 32, 33, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [31, 34], "excluded_lines": [], "start_line": 27, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29]], "missing_branches": [[30, 31], [33, 34]]}, "point_in_time_join": {"executed_lines": [55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 69.38775510204081, "percent_covered_display": "69", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [56, 60, 72, 86, 87, 88, 89, 104], "excluded_lines": [], "start_line": 38, "executed_branches": [[55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105]], "missing_branches": [[55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104]]}, "audit_point_in_time": {"executed_lines": [115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [117, 127, 128, 129], "excluded_lines": [], "start_line": 108, "executed_branches": [[116, 118], [121, 122], [121, 123], [126, 130]], "missing_branches": [[116, 117], [126, 127]]}, "apply_symbol_lifecycle": {"executed_lines": [149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [150, 154], "excluded_lines": [], "start_line": 139, "executed_branches": [[149, 151], [153, 155]], "missing_branches": [[149, 150], [153, 154]]}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 38, 108, 139], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]]}}}, "src\\quant_data_kit\\temporal_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]], "functions": {"ensure_utc_datetime": {"executed_lines": [18, 19, 21, 22, 23, 24, 27, 28, 29], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [20, 25, 26], "excluded_lines": [], "start_line": 16, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29]]}, "_utc_series": {"executed_lines": [33, 35, 36, 37, 38, 39, 40, 42, 43], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [34, 41], "excluded_lines": [], "start_line": 32, "executed_branches": [[33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39]], "missing_branches": [[33, 34], [38, 41]]}, "validate_bitemporal_frame": {"executed_lines": [62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105], "summary": {"covered_lines": 21, "num_statements": 33, "percent_covered": 61.224489795918366, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104], "excluded_lines": [], "start_line": 52, "executed_branches": [[63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105]], "missing_branches": [[63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104]]}, "point_in_time_join_bitemporal": {"executed_lines": [122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 38, "num_statements": 42, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [123, 127, 155, 168], "excluded_lines": [], "start_line": 108, "executed_branches": [[122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[122, 123], [126, 127], [154, 155], [167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 32, 46, 47, 48, 49, 52, 108], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BitemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]]}}}, "src\\quant_data_kit\\validate.py": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]], "functions": {"validate_price_frame": {"executed_lines": [21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57], "summary": {"covered_lines": 18, "num_statements": 25, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72", "num_branches": 18, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55], "excluded_lines": [], "start_line": 14, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55]]}, "validate_calendar_coverage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}, "": {"executed_lines": [3, 5, 7, 9, 11, 14, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 1, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}}}, "tests\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_adapters_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": [], "functions": {"load_messages": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "binance_adapter": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "okx_adapter": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cn_adapter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "test_crypto_fixture_adapters_cover_required_events_and_replay_l2": {"executed_lines": [111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "test_binance_and_okx_map_to_same_stable_instrument_ids": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_crypto_fixtures_enter_normalized_layer_without_quarantine": {"executed_lines": [155, 159, 160, 169, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154, "executed_branches": [[155, -154], [155, 159]], "missing_branches": []}, "test_domestic_neutral_fixture_is_explicitly_not_market_data_certified": {"executed_lines": [183, 184, 185, 186, 190, 191, 192, 193], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "test_domestic_neutral_adapter_rejects_market_certification_claim": {"executed_lines": [200, 201, 202, 203], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_provider_sequence_gap_is_rejected_before_v2_emission": {"executed_lines": [207, 208, 209, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_binance_update_range_and_okx_trade_side_are_strict": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_failure": {"executed_lines": [225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224, "executed_branches": [], "missing_branches": []}, "test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract": {"executed_lines": [264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot": {"executed_lines": [292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_fixture_index_hashes_are_exact": {"executed_lines": [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[331, -322], [331, 332]], "missing_branches": []}, "test_adapter_context_time_and_sequence_primitives_fail_closed": {"executed_lines": [337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [], "missing_branches": []}, "test_adapter_constructors_and_unknown_message_kinds_are_strict": {"executed_lines": [404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 45, 60, 75, 88, 105, 141, 154, 182, 199, 206, 213, 224, 241, 263, 291, 322, 336, 403], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": []}}}, "tests\\test_benchmark_capture_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 171, 172, 174, 175, 176, 177, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[176, 177], [176, 179]], "missing_branches": [], "functions": {"test_dense_burst_fixture_has_frozen_depth_and_expected_row_density": {"executed_lines": [28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_sparse_fixture_is_retained_and_fixture_guards_fail_closed": {"executed_lines": [61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts": {"executed_lines": [81, 82, 83, 85, 89, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts.accepted": {"executed_lines": [90, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches": {"executed_lines": [122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor.submit": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures": {"executed_lines": [169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.__init__": {"executed_lines": [171, 172], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.submit": {"executed_lines": [175, 176, 177, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "test_benchmark_timing_excludes_only_post_report_worker_teardown": {"executed_lines": [206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 60, 78, 119, 168, 205], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate": {"executed_lines": [171, 172, 175, 176, 177, 179, 180], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 133, "num_statements": 133, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_benchmark_normalized_l2.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[14, -10], [14, 15]], "missing_branches": [], "functions": {"test_synthetic_l2_fixture_is_sequential_and_schema_valid": {"executed_lines": [11, 12, 13, 14, 15, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}, "test_small_benchmark_proves_end_to_end_determinism": {"executed_lines": [24, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}}}, "tests\\test_capture_v2_collector_cli_transport.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 114, 115, 116, 119, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 523, 525, 526, 527, 529, 530, 531, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 640, 642, 643, 645, 646, 648, 649, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 671, 673, 674, 675, 678, 681, 682, 683, 684, 685, 687, 688, 690, 691, 692, 694, 695, 697, 699, 700, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 361, "num_statements": 364, "percent_covered": 98.67724867724868, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.17582417582418, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [86, 693, 696], "excluded_lines": [], "executed_branches": [[85, 87], [133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511], [692, 694], [694, 695], [694, 697]], "missing_branches": [[85, 86], [692, 693]], "functions": {"FakeClock.__init__": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [64, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [69, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "FakeConnection.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "FakeConnection.send": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "FakeConnection.receive": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 83, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnection.close": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "FakeConnector.__init__": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "FakeConnector.connect": {"executed_lines": [101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "FailedConnector.__init__": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "FailedConnector.connect": {"executed_lines": [115, 116], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "FakeHttp.__init__": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "FakeHttp.get": {"executed_lines": [124, 125, 126, 129], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "messages_for": {"executed_lines": [133, 134, 135, 136, 146, 147, 148, 149, 150], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148]], "missing_branches": []}, "roots": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "distinct_identity": {"executed_lines": [203, 204], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "storage_guard": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [], "missing_branches": []}, "config": {"executed_lines": [220, 221, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_full_eight_stream_bounded_probe_archives_and_normalizes": {"executed_lines": [243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "test_preflight_same_physical_volume_pauses_without_network": {"executed_lines": [301, 302, 303, 304, 305, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [], "missing_branches": []}, "test_connect_failures_use_bounded_retry_and_end_paused": {"executed_lines": [327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted": {"executed_lines": [363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive.archive_segment": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight": {"executed_lines": [402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398, "executed_branches": [], "missing_branches": []}, "test_cli_run_requires_confirmation_and_probe_bound": {"executed_lines": [438, 439, 440, 451, 452, 453, 454], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes": {"executed_lines": [460, 462, 463, 471, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[495, 496], [495, 511]], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.write": {"executed_lines": [472, 473, 474], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.__init__": {"executed_lines": [523], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.preflight_only": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.run": {"executed_lines": [530, 531], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "test_runner_fail_closed_internal_guards_and_raw_metadata": {"executed_lines": [544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage": {"executed_lines": [594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive.archive_segment": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors": {"executed_lines": [632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 631, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__enter__": {"executed_lines": [640], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 639, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__exit__": {"executed_lines": [643], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 642, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.read": {"executed_lines": [646], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 645, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.geturl": {"executed_lines": [649], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 648, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.failed": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse.geturl": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls": {"executed_lines": [681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 721, 722, 724, 727, 728, 729], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.__init__": {"executed_lines": [683, 684, 685], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.send": {"executed_lines": [688], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 687, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.recv": {"executed_lines": [691, 692, 694, 695, 697], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 690, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.close": {"executed_lines": [700], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 699, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connected": {"executed_lines": [719], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connection_failure": {"executed_lines": [725], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 194, 202, 207, 219, 242, 300, 326, 362, 398, 437, 457, 543, 591, 631, 678], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [60, 61, 64, 65, 66, 69, 70], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "FakeConnection": {"executed_lines": [75, 76, 77, 78, 81, 84, 85, 87, 90], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 73, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnector": {"executed_lines": [95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "FailedConnector": {"executed_lines": [112, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "FakeHttp": {"executed_lines": [121, 124, 125, 126, 129], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator": {"executed_lines": [523, 526, 527, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response": {"executed_lines": [640, 643, 646, 649], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.BadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 669, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying": {"executed_lines": [683, 684, 685, 688, 691, 692, 694, 695, 697, 700], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 681, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675, 678, 681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 304, "num_statements": 304, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511]], "missing_branches": []}}}, "tests\\test_capture_v2_models_storage.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 56, 57, 59, 60, 61, 62, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 606, 608, 609, 610, 612, 613, 614, 615, 616, 618, 619, 620, 622, 623, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 365, "num_statements": 367, "percent_covered": 99.46949602122015, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.4550408719346, "percent_statements_covered_display": "99", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": [], "functions": {"FakeClock.__init__": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "identities": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "guard": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "raw_frame": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "storage_roots": {"executed_lines": [112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "test_default_scope_is_exact_sorted_and_credential_free": {"executed_lines": [122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_scope_config_stream_and_retry_guards": {"executed_lines": [147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184]], "missing_branches": []}, "test_symbol_mapping_resolution_is_effective_and_point_in_time": {"executed_lines": [201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "test_raw_frame_round_trip_and_monotonic_clock": {"executed_lines": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure": {"executed_lines": [265, 266, 267, 268, 270, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 304, 312, 313, 314, 315, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.persist": {"executed_lines": [271, 272], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.failed_sink": {"executed_lines": [299, 300, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [[300, 301], [300, 302]], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths": {"executed_lines": [322, 323, 324, 325, 327, 332, 334, 335, 337, 340, 341, 343, 346, 347, 349, 352, 353, 356, 357], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.low_archive": {"executed_lines": [338], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_identity": {"executed_lines": [344], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_capacity": {"executed_lines": [350], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_segment_rotation_restore_and_no_cleanup": {"executed_lines": [361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360, "executed_branches": [], "missing_branches": []}, "test_segment_time_rotation_identity_order_and_capacity_fail_closed": {"executed_lines": [404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause": {"executed_lines": [445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 480, 481, 482, 483], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause.wrong_restore_hash": {"executed_lines": [476, 477, 478], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475, "executed_branches": [[476, 477], [476, 478]], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths": {"executed_lines": [489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 544, 545, 546, 547], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths.link_failed": {"executed_lines": [542], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed": {"executed_lines": [553, 555, 556, 557, 558, 560, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed.wrong_preflight_hash": {"executed_lines": [561, 562, 563], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 560, "executed_branches": [[561, 562], [561, 563]], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed": {"executed_lines": [597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 632, 633, 639, 640, 642, 648, 649, 651, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.__init__": {"executed_lines": [606], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.resolve": {"executed_lines": [609, 610], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 608, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__init__": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__call__": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.kernel": {"executed_lines": [626], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response": {"executed_lines": [652, 666], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 651, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response.respond": {"executed_lines": [662, 663, 664], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 74, 86, 111, 121, 146, 200, 233, 264, 319, 360, 403, 442, 486, 550, 594], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [56, 57, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath": {"executed_lines": [606, 609, 610], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub": {"executed_lines": [620, 623], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 355, "num_statements": 355, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": []}}}, "tests\\test_capture_v2_remediation.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 65, 66, 67, 68, 69, 70, 77, 84, 85, 86, 87, 88, 90, 92, 93, 94, 97, 98, 99, 100, 101, 104, 107, 108, 109, 110, 111, 118, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 139, 140, 142, 143, 144, 146, 147, 148, 150, 159, 160, 161, 172, 174, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 190, 193, 194, 195, 197, 199, 200, 202, 203, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 248, 249, 250, 253, 256, 257, 258, 260, 262, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 280, 283, 285, 286, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 304, 305, 306, 307, 308, 318, 321, 322, 323, 328, 329, 330, 331, 336, 337, 338, 339, 340, 341, 346, 349, 352, 353, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 375, 378, 379, 380, 381, 386, 387, 398, 399, 400, 401, 402, 403, 404, 405, 406, 412, 414, 415, 416, 425, 427, 430, 433, 434, 435, 436, 438, 439, 440, 441, 442, 443, 444, 445, 447, 448, 450, 451, 452, 453, 455, 456, 457, 458, 460, 461, 462, 463, 464, 468, 469, 470, 471, 472, 473, 474, 475, 482, 485, 486, 487, 489, 491, 492, 493, 494, 496, 497, 498, 499, 500, 509, 510, 512, 513, 517, 518, 519, 520, 522, 523, 526, 527, 528, 531, 532, 533, 534, 550, 551, 552, 555, 556, 557, 558, 559, 561, 562, 563, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 592, 595, 596, 598, 599, 600, 601, 602, 604, 607, 613, 614, 623, 624, 625, 626, 627, 628, 630, 631, 632, 637, 638, 641, 642, 643, 644, 645, 651, 653, 654, 655, 656, 661, 662, 663, 664, 666, 679, 680, 681, 682, 683, 686, 687, 688, 693, 694, 700, 702, 703, 705, 706, 707, 708, 709, 710, 713, 715, 716, 717, 719, 732, 733, 734, 735, 736, 737, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 751, 754, 755, 756, 763, 764, 765, 766, 768, 769, 770, 772, 773, 776, 777, 779, 781, 791, 792, 793, 794, 795, 796, 797, 798, 801, 804, 805, 806, 809, 821, 822, 823, 825, 830, 831, 832, 835, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 853, 854, 857, 858, 859, 860, 861, 863, 864, 866, 867, 868, 871, 872, 873, 874, 876, 877, 884, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 909, 912, 913, 914, 923, 924, 926, 927, 934, 943, 948, 949, 951, 957, 958, 963, 964, 969, 970, 971, 972, 973, 974, 975, 978, 981, 982, 983, 984, 993, 994, 995, 996, 997, 998, 1008, 1009, 1010, 1011, 1021, 1022, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1045, 1046, 1047, 1048, 1049, 1055, 1056, 1071, 1074, 1075, 1076, 1083, 1084, 1086, 1092, 1093, 1096, 1104, 1105, 1106, 1107, 1108, 1111, 1114, 1115, 1116, 1122, 1127, 1128, 1138, 1139, 1140, 1143, 1144, 1145, 1146, 1147, 1149, 1150, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, 1181, 1184, 1196, 1197, 1198, 1201, 1204, 1205, 1206, 1207, 1208, 1215, 1216, 1217, 1218, 1220, 1221, 1228, 1229, 1230, 1232, 1233, 1234, 1235, 1236, 1239, 1245, 1247, 1248, 1249, 1250, 1252, 1261, 1262, 1263, 1264, 1265, 1266, 1268, 1269, 1270, 1271, 1272, 1273, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1298, 1299, 1300, 1303, 1315, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1339, 1348, 1351, 1352, 1353, 1354, 1355, 1356, 1365, 1366, 1373, 1382, 1385, 1386, 1387, 1388, 1397, 1398, 1399, 1400, 1409, 1410, 1417, 1420, 1421, 1422, 1423, 1433, 1434, 1435, 1436, 1446, 1447, 1448, 1449, 1459, 1460, 1461, 1462, 1463, 1464, 1469, 1470, 1471, 1482, 1483, 1484, 1485, 1486, 1487, 1496, 1497, 1498, 1507, 1508, 1509, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1529, 1530, 1531, 1534, 1535, 1536, 1537, 1540, 1541, 1542, 1543, 1544, 1545, 1556, 1559, 1560, 1561, 1562, 1563, 1573, 1574, 1575, 1576, 1586, 1587, 1588, 1589, 1590, 1600, 1601, 1602, 1603, 1613, 1614, 1615, 1616, 1627, 1630, 1631, 1633, 1634, 1635, 1636, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1651, 1654, 1655, 1656, 1657, 1666, 1667, 1672, 1673, 1674, 1675, 1676, 1677, 1680, 1681, 1682, 1683, 1684, 1685, 1687, 1688, 1690, 1691, 1692, 1694, 1695, 1696, 1697, 1698, 1700, 1709, 1710, 1711, 1712, 1713, 1715, 1716, 1725, 1726, 1727, 1729, 1730, 1731, 1733, 1734, 1736, 1737, 1738, 1739, 1740, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1751, 1752, 1753, 1754, 1756, 1758, 1759, 1760, 1762, 1763, 1764, 1765, 1768, 1771, 1772, 1781, 1783, 1784, 1786, 1787, 1790, 1791, 1792, 1794, 1795, 1796, 1797, 1798, 1799, 1801, 1802, 1803, 1804, 1805], "summary": {"covered_lines": 859, "num_statements": 875, "percent_covered": 97.91894852135816, "percent_covered_display": "98", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 98.17142857142858, "percent_statements_covered_display": "98", "num_branches": 38, "num_partial_branches": 3, "covered_branches": 35, "missing_branches": 3, "percent_branches_covered": 92.10526315789474, "percent_branches_covered_display": "92"}, "missing_lines": [55, 56, 57, 58, 59, 61, 95, 175, 176, 413, 711, 774, 869, 1094, 1151, 1788], "excluded_lines": [], "executed_branches": [[86, 87], [86, 90], [93, 94], [179, 180], [179, 181], [263, 264], [263, 265], [412, 414], [451, 452], [451, 453], [491, 492], [491, 494], [518, 519], [518, 520], [550, -531], [550, 551], [580, 581], [580, 582], [583, 584], [583, 586], [600, 601], [600, 602], [707, 708], [707, 709], [765, 766], [765, 768], [867, 868], [1216, 1217], [1216, 1218], [1485, 1486], [1485, 1487], [1635, -1633], [1635, 1636], [1696, 1697], [1696, 1698]], "missing_branches": [[93, 95], [412, 413], [867, 869]], "functions": {"_process_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads": {"executed_lines": [65, 66, 67, 68, 69, 70, 77, 84, 85, 86, 87, 88, 90, 92, 97, 98, 99, 100, 101], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [[86, 87], [86, 90]], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads.fail_after_initial": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [95], "excluded_lines": [], "start_line": 92, "executed_branches": [[93, 94]], "missing_branches": [[93, 95]]}, "test_illegal_transition_is_durable_and_failed_illegal_audit_is_not_counted": {"executed_lines": [107, 108, 109, 110, 111, 118, 125, 126, 127, 128, 129, 130, 131, 132, 133], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes": {"executed_lines": [139, 140, 142, 146, 150, 159, 160, 161, 172, 174, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[179, 180], [179, 181]], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.capacity": {"executed_lines": [143, 144], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.tree": {"executed_lines": [147, 148], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.counted_fsync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [175, 176], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches": {"executed_lines": [193, 194, 195, 197, 202, 203, 212, 213, 214, 215, 216], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches.counted": {"executed_lines": [199, 200], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "_journal_with_lineage": {"executed_lines": [220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 248, 249, 250], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries": {"executed_lines": [256, 257, 258, 260, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 253, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries.fail_once": {"executed_lines": [262, 263, 264, 265], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260, "executed_branches": [[263, 264], [263, 265]], "missing_branches": []}, "test_normalized_crash_after_publish_reconciles_prepared_transaction": {"executed_lines": [283, 285, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 304, 305, 306, 307, 308], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [], "missing_branches": []}, "test_normalized_crash_after_publish_reconciles_prepared_transaction.terminate_after_publish": {"executed_lines": [286], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [], "missing_branches": []}, "test_reconciliation_binds_aborts_to_their_prepared_attempt": {"executed_lines": [321, 322, 323, 328, 329, 330, 331, 336, 337, 338, 339, 340, 341, 346], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318, "executed_branches": [], "missing_branches": []}, "test_pending_transaction_rejects_mutation_and_malformed_time": {"executed_lines": [352, 353, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_reparse_journal_parent": {"executed_lines": [378, 379, 380, 381, 386, 387], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 375, "executed_branches": [], "missing_branches": []}, "test_epoch_creation_rejects_real_windows_junction": {"executed_lines": [400, 401, 402, 403, 404, 405, 406, 412, 414, 415, 416, 425, 427], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [413], "excluded_lines": [], "start_line": 399, "executed_branches": [[412, 414]], "missing_branches": [[412, 413]]}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed": {"executed_lines": [433, 434, 435, 436, 438, 439, 440, 441, 442, 443, 444, 445, 447, 448, 450, 455, 456, 457, 458, 460, 461, 462, 463, 464, 468, 469, 470, 471, 472, 473, 474, 475], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 430, "executed_branches": [], "missing_branches": []}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed.fail_after_open": {"executed_lines": [451, 452, 453], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 450, "executed_branches": [[451, 452], [451, 453]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery": {"executed_lines": [485, 486, 487, 489, 496, 497, 498, 499, 500, 509, 510, 512, 513, 517, 522, 523, 526, 527, 528], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.receipt_fails_once": {"executed_lines": [491, 492, 493, 494], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 489, "executed_branches": [[491, 492], [491, 494]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.failure_record_fails": {"executed_lines": [518, 519, 520], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517, "executed_branches": [[518, 519], [518, 520]], "missing_branches": []}, "test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains": {"executed_lines": [532, 533, 534, 550, 551, 552], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 531, "executed_branches": [[550, -531], [550, 551]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe": {"executed_lines": [556, 557, 558, 559, 561, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 555, "executed_branches": [[580, 581], [580, 582], [583, 584], [583, 586]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe.publish_same": {"executed_lines": [562, 563], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 561, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent": {"executed_lines": [595, 596, 598, 604, 607, 613, 614, 623, 624, 625, 626, 627, 628, 630, 631, 632, 637, 638], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 592, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent.identity": {"executed_lines": [599, 600, 601, 602], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 598, "executed_branches": [[600, 601], [600, 602]], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot": {"executed_lines": [642, 643, 644, 645, 651, 653, 654, 661, 662, 666, 679, 680, 681, 682, 683], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection.__init__": {"executed_lines": [655, 656], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 654, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector.connect": {"executed_lines": [663, 664], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused": {"executed_lines": [687, 688, 693, 694, 700, 702, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 686, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise": {"executed_lines": [703, 705, 706, 713, 715, 716, 719, 732, 733, 734, 735, 736, 737], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 702, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection.receive": {"executed_lines": [707, 708, 709, 710], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [711], "excluded_lines": [], "start_line": 706, "executed_branches": [[707, 708], [707, 709]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector.connect": {"executed_lines": [717], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 716, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures": {"executed_lines": [754, 755, 756, 763, 764, 781, 791, 792, 793, 794, 795, 796, 797, 798], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 751, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect": {"executed_lines": [765, 766, 768, 769, 772, 776, 779], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 764, "executed_branches": [[765, 766], [765, 768]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.send": {"executed_lines": [770], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 769, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.receive": {"executed_lines": [773], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [774], "excluded_lines": [], "start_line": 772, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.close": {"executed_lines": [777], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 776, "executed_branches": [], "missing_branches": []}, "test_preflight_report_uses_honest_zero_audit_and_report_publish_fails_closed": {"executed_lines": [804, 805, 806, 809, 821, 822, 823, 825, 830, 831, 832], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 801, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches": {"executed_lines": [838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 853, 854, 857, 858, 859, 860, 861, 863, 864, 866, 871, 872, 873, 874, 876, 877, 884, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 835, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches.wrong_staging_hash": {"executed_lines": [867, 868], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [869], "excluded_lines": [], "start_line": 866, "executed_branches": [[867, 868]], "missing_branches": [[867, 869]]}, "test_storage_ack_reload_identity_and_restore_parent_fail_closed": {"executed_lines": [912, 913, 914, 923, 924, 926, 927, 934, 943, 948, 949, 951, 957, 958, 963, 964, 969, 970, 971, 972, 973, 974, 975], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 909, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_and_abort_negative_branches": {"executed_lines": [981, 982, 983, 984, 993, 994, 995, 996, 997, 998, 1008, 1009, 1010, 1011, 1021, 1022, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 978, "executed_branches": [], "missing_branches": []}, "_runner_for_negative_test": {"executed_lines": [1046, 1047, 1048, 1049, 1055, 1056], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1045, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails": {"executed_lines": [1074, 1075, 1076, 1083, 1086, 1092, 1093, 1096, 1104, 1105, 1106, 1107, 1108], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1071, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.fail_reconciliation": {"executed_lines": [1084], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1083, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1094], "excluded_lines": [], "start_line": 1093, "executed_branches": [], "missing_branches": []}, "test_coordinator_reports_reconciled_epoch_before_network": {"executed_lines": [1114, 1115, 1116, 1122, 1127, 1128, 1138, 1139, 1140], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1111, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards": {"executed_lines": [1144, 1145, 1146, 1147, 1149, 1150, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1143, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1151], "excluded_lines": [], "start_line": 1150, "executed_branches": [], "missing_branches": []}, "test_runner_audit_failure_and_coordinator_run_preflight_failure": {"executed_lines": [1170, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, 1181, 1184, 1196, 1197, 1198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1169, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight": {"executed_lines": [1204, 1205, 1206, 1207, 1208, 1215, 1220, 1221, 1228, 1229, 1230, 1232, 1233, 1234, 1235, 1236, 1239, 1245, 1247, 1248, 1252, 1261, 1268, 1269, 1270, 1271, 1272, 1273], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1201, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.unhandled": {"executed_lines": [1216, 1217, 1218], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1215, "executed_branches": [[1216, 1217], [1216, 1218]], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector.connect": {"executed_lines": [1249, 1250], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1248, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.cancel_outer": {"executed_lines": [1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1261, "executed_branches": [], "missing_branches": []}, "_failed_epoch_for_recovery": {"executed_lines": [1277, 1278, 1279, 1280, 1281, 1282], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1276, "executed_branches": [], "missing_branches": []}, "_rewrite_content_addressed": {"executed_lines": [1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1285, "executed_branches": [], "missing_branches": []}, "_rewrite_failure": {"executed_lines": [1299, 1300], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1298, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_prepared_identity_field": {"executed_lines": [1318, 1319, 1320, 1321, 1322, 1331, 1332], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1315, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_committed_identity_field": {"executed_lines": [1351, 1352, 1353, 1354, 1355, 1356, 1365, 1366], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1348, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_explicit_abort_identity_field": {"executed_lines": [1385, 1386, 1387, 1388, 1397, 1398, 1399, 1400, 1409, 1410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1382, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_failure_lineage_reference_and_filename": {"executed_lines": [1420, 1421, 1422, 1423, 1433, 1434, 1435, 1436, 1446, 1447, 1448, 1449, 1459, 1460, 1461, 1462, 1463, 1464, 1469, 1470, 1471], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1417, "executed_branches": [], "missing_branches": []}, "test_epoch_legacy_failure_and_pending_manifest_negative_paths": {"executed_lines": [1483, 1484, 1485, 1486, 1487, 1496, 1497, 1498, 1507, 1508, 1509, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1529, 1530, 1531, 1534, 1535, 1536, 1537, 1540, 1541, 1542, 1543, 1544, 1545], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1482, "executed_branches": [[1485, 1486], [1485, 1487]], "missing_branches": []}, "test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush": {"executed_lines": [1559, 1560, 1561, 1562, 1563, 1573, 1574, 1575, 1576, 1586, 1587, 1588, 1589, 1590, 1600, 1601, 1602, 1603, 1613, 1614, 1615, 1616], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1556, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable": {"executed_lines": [1630, 1631, 1633, 1638, 1639, 1640, 1641, 1642, 1643, 1644], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1627, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable.corrupt_receipt": {"executed_lines": [1634, 1635, 1636], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1633, "executed_branches": [[1635, -1633], [1635, 1636]], "missing_branches": []}, "test_epoch_abort_publish_failure_keeps_retryable_open_state": {"executed_lines": [1654, 1655, 1656, 1657, 1666, 1667, 1672, 1673, 1674, 1675, 1676, 1677], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1651, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge": {"executed_lines": [1681, 1682, 1683, 1684, 1685, 1687, 1688, 1690, 1691, 1694, 1700, 1709, 1710, 1711, 1712, 1713, 1715, 1716, 1725, 1726, 1727, 1729, 1730, 1733, 1736, 1737, 1738, 1739, 1740, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1751, 1752, 1756, 1758, 1759, 1762, 1763, 1764, 1765], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1680, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.__init__": {"executed_lines": [1692], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1691, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.connect": {"executed_lines": [1695, 1696, 1697, 1698], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1694, "executed_branches": [[1696, 1697], [1696, 1698]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.__init__": {"executed_lines": [1731], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1730, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.connect": {"executed_lines": [1734], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1733, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection.__init__": {"executed_lines": [1753, 1754], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1752, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector.connect": {"executed_lines": [1760], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1759, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report": {"executed_lines": [1771, 1772, 1781, 1783, 1801, 1802, 1803, 1804, 1805], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1768, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise": {"executed_lines": [1784, 1786, 1787, 1790, 1794, 1795, 1796, 1797, 1798, 1799], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1783, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1788], "excluded_lines": [], "start_line": 1787, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.sleep": {"executed_lines": [1791, 1792], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1790, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 104, 136, 190, 219, 253, 280, 318, 349, 375, 398, 399, 430, 482, 531, 555, 592, 641, 686, 751, 801, 835, 909, 978, 1045, 1071, 1111, 1143, 1169, 1201, 1276, 1285, 1298, 1303, 1315, 1339, 1348, 1373, 1382, 1417, 1482, 1556, 1627, 1651, 1680, 1768], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection": {"executed_lines": [655, 656], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector": {"executed_lines": [663, 664], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection": {"executed_lines": [707, 708, 709, 710], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [711], "excluded_lines": [], "start_line": 705, "executed_branches": [[707, 708], [707, 709]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector": {"executed_lines": [717], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector": {"executed_lines": [765, 766, 768, 769, 772, 776, 779], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[765, 766], [765, 768]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked": {"executed_lines": [770, 773, 777], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [774], "excluded_lines": [], "start_line": 768, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1094], "excluded_lines": [], "start_line": 1092, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1151], "excluded_lines": [], "start_line": 1149, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector": {"executed_lines": [1249, 1250], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1247, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect": {"executed_lines": [1692, 1695, 1696, 1697, 1698], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1690, "executed_branches": [[1696, 1697], [1696, 1698]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover": {"executed_lines": [1731, 1734], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1729, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection": {"executed_lines": [1753, 1754], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1751, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector": {"executed_lines": [1760], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1758, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock": {"executed_lines": [1791, 1792], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1788], "excluded_lines": [], "start_line": 1786, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 65, 66, 67, 68, 69, 70, 77, 84, 85, 86, 87, 88, 90, 92, 93, 94, 97, 98, 99, 100, 101, 104, 107, 108, 109, 110, 111, 118, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 139, 140, 142, 143, 144, 146, 147, 148, 150, 159, 160, 161, 172, 174, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 190, 193, 194, 195, 197, 199, 200, 202, 203, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 248, 249, 250, 253, 256, 257, 258, 260, 262, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 280, 283, 285, 286, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 304, 305, 306, 307, 308, 318, 321, 322, 323, 328, 329, 330, 331, 336, 337, 338, 339, 340, 341, 346, 349, 352, 353, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 375, 378, 379, 380, 381, 386, 387, 398, 399, 400, 401, 402, 403, 404, 405, 406, 412, 414, 415, 416, 425, 427, 430, 433, 434, 435, 436, 438, 439, 440, 441, 442, 443, 444, 445, 447, 448, 450, 451, 452, 453, 455, 456, 457, 458, 460, 461, 462, 463, 464, 468, 469, 470, 471, 472, 473, 474, 475, 482, 485, 486, 487, 489, 491, 492, 493, 494, 496, 497, 498, 499, 500, 509, 510, 512, 513, 517, 518, 519, 520, 522, 523, 526, 527, 528, 531, 532, 533, 534, 550, 551, 552, 555, 556, 557, 558, 559, 561, 562, 563, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 592, 595, 596, 598, 599, 600, 601, 602, 604, 607, 613, 614, 623, 624, 625, 626, 627, 628, 630, 631, 632, 637, 638, 641, 642, 643, 644, 645, 651, 653, 654, 661, 662, 666, 679, 680, 681, 682, 683, 686, 687, 688, 693, 694, 700, 702, 703, 705, 706, 713, 715, 716, 719, 732, 733, 734, 735, 736, 737, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 751, 754, 755, 756, 763, 764, 781, 791, 792, 793, 794, 795, 796, 797, 798, 801, 804, 805, 806, 809, 821, 822, 823, 825, 830, 831, 832, 835, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 853, 854, 857, 858, 859, 860, 861, 863, 864, 866, 867, 868, 871, 872, 873, 874, 876, 877, 884, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 909, 912, 913, 914, 923, 924, 926, 927, 934, 943, 948, 949, 951, 957, 958, 963, 964, 969, 970, 971, 972, 973, 974, 975, 978, 981, 982, 983, 984, 993, 994, 995, 996, 997, 998, 1008, 1009, 1010, 1011, 1021, 1022, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1045, 1046, 1047, 1048, 1049, 1055, 1056, 1071, 1074, 1075, 1076, 1083, 1084, 1086, 1092, 1093, 1096, 1104, 1105, 1106, 1107, 1108, 1111, 1114, 1115, 1116, 1122, 1127, 1128, 1138, 1139, 1140, 1143, 1144, 1145, 1146, 1147, 1149, 1150, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, 1181, 1184, 1196, 1197, 1198, 1201, 1204, 1205, 1206, 1207, 1208, 1215, 1216, 1217, 1218, 1220, 1221, 1228, 1229, 1230, 1232, 1233, 1234, 1235, 1236, 1239, 1245, 1247, 1248, 1252, 1261, 1262, 1263, 1264, 1265, 1266, 1268, 1269, 1270, 1271, 1272, 1273, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1298, 1299, 1300, 1303, 1315, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1339, 1348, 1351, 1352, 1353, 1354, 1355, 1356, 1365, 1366, 1373, 1382, 1385, 1386, 1387, 1388, 1397, 1398, 1399, 1400, 1409, 1410, 1417, 1420, 1421, 1422, 1423, 1433, 1434, 1435, 1436, 1446, 1447, 1448, 1449, 1459, 1460, 1461, 1462, 1463, 1464, 1469, 1470, 1471, 1482, 1483, 1484, 1485, 1486, 1487, 1496, 1497, 1498, 1507, 1508, 1509, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1529, 1530, 1531, 1534, 1535, 1536, 1537, 1540, 1541, 1542, 1543, 1544, 1545, 1556, 1559, 1560, 1561, 1562, 1563, 1573, 1574, 1575, 1576, 1586, 1587, 1588, 1589, 1590, 1600, 1601, 1602, 1603, 1613, 1614, 1615, 1616, 1627, 1630, 1631, 1633, 1634, 1635, 1636, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1651, 1654, 1655, 1656, 1657, 1666, 1667, 1672, 1673, 1674, 1675, 1676, 1677, 1680, 1681, 1682, 1683, 1684, 1685, 1687, 1688, 1690, 1691, 1694, 1700, 1709, 1710, 1711, 1712, 1713, 1715, 1716, 1725, 1726, 1727, 1729, 1730, 1733, 1736, 1737, 1738, 1739, 1740, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1751, 1752, 1756, 1758, 1759, 1762, 1763, 1764, 1765, 1768, 1771, 1772, 1781, 1783, 1784, 1786, 1787, 1790, 1794, 1795, 1796, 1797, 1798, 1799, 1801, 1802, 1803, 1804, 1805], "summary": {"covered_lines": 826, "num_statements": 837, "percent_covered": 98.38895281933257, "percent_covered_display": "98", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 98.6857825567503, "percent_statements_covered_display": "99", "num_branches": 32, "num_partial_branches": 3, "covered_branches": 29, "missing_branches": 3, "percent_branches_covered": 90.625, "percent_branches_covered_display": "91"}, "missing_lines": [55, 56, 57, 58, 59, 61, 95, 175, 176, 413, 869], "excluded_lines": [], "start_line": 1, "executed_branches": [[86, 87], [86, 90], [93, 94], [179, 180], [179, 181], [263, 264], [263, 265], [412, 414], [451, 452], [451, 453], [491, 492], [491, 494], [518, 519], [518, 520], [550, -531], [550, 551], [580, 581], [580, 582], [583, 584], [583, 586], [600, 601], [600, 602], [867, 868], [1216, 1217], [1216, 1218], [1485, 1486], [1485, 1487], [1635, -1633], [1635, 1636]], "missing_branches": [[93, 95], [412, 413], [867, 869]]}}}, "tests\\test_capture_v2_synchronizers_epoch.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 369, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 260, "num_statements": 262, "percent_covered": 99.24812030075188, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23664122137404, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": [], "functions": {"stream": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "resolver": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "frame": {"executed_lines": [59, 60, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "binance_snapshot": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "binance_update": {"executed_lines": [87, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[97, 98], [97, 99]], "missing_branches": []}, "okx_message": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "storage": {"executed_lines": [124, 125, 126, 128, 132, 141], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit": {"executed_lines": [145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed": {"executed_lines": [177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [], "missing_branches": []}, "test_binance_snapshot_malformed_and_crossed": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [], "missing_branches": []}, "test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot": {"executed_lines": [217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset": {"executed_lines": [237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "test_okx_gap_heartbeat_levels_errors_and_envelope_guards": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "test_binance_wire_and_book_negative_branches_are_fail_closed": {"executed_lines": [305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [[341, 342], [341, 347]], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync": {"executed_lines": [367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver.resolve": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_sequence_normalizer_no_change_branch_is_strict": {"executed_lines": [395, 396, 397, 400, 401, 402, 405, 406, 409, 410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394, "executed_branches": [], "missing_branches": []}, "test_normalized_epoch_journal_publishes_complete_raw_lineage": {"executed_lines": [419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418, "executed_branches": [], "missing_branches": []}, "test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible": {"executed_lines": [461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "test_epoch_configuration_closed_abort_and_part_integrity_guards": {"executed_lines": [530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 53, 58, 78, 86, 102, 123, 144, 176, 201, 208, 216, 236, 279, 304, 366, 394, 418, 460, 529], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.24528301886792, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": []}}}, "tests\\test_catalog.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_register_and_list": {"executed_lines": [8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_catalog_factors.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_registers_quant_factors_stack": {"executed_lines": [8, 9, 10, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "test_qdk_catalog_list_shows_factors_version": {"executed_lines": [15, 16, 17, 18, 19], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_curated.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "normalized_trades": {"executed_lines": [43, 52, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "curate": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "test_session_bar_aggregation_is_deterministic_and_session_anchored": {"executed_lines": [78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_session_bar_refuses_missing_or_future_session_start": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_curated_revision_is_immutable_and_lineage_changes_snapshot": {"executed_lines": [119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_curated_partition_mutation_is_detected": {"executed_lines": [164, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_curated_reader_rejects_dataset_and_snapshot_path_traversal": {"executed_lines": [178, 179, 180, 181], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 42, 64, 77, 106, 118, 163, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_data_lake.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade_record": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "admitted_raw": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "test_raw_bytes_are_immutable_idempotent_and_conflict_on_key_reuse": {"executed_lines": [75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "test_raw_mutation_is_detected": {"executed_lines": [114, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [], "missing_branches": []}, "test_raw_request_metadata_must_be_canonical_json": {"executed_lines": [130, 131], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "test_capacity_policy_stops_with_explicit_alert": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_cleanup_requires_verified_archive_restore_and_explicit_confirmation": {"executed_lines": [166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_normalized_partitions_quarantine_bad_stream_and_pin_duckdb_snapshot": {"executed_lines": [229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "test_normalized_partition_mutation_fails_hash_validation": {"executed_lines": [274, 275, 283, 284, 285, 286, 287, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_cross_is_quarantined_before_research_layer": {"executed_lines": [292, 293, 319, 336, 344, 345, 346, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_checkpoint_mismatch_is_quarantined": {"executed_lines": [351, 352, 378, 379, 388, 389, 390, 391], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_provider_mismatch_and_non_finite_payload_are_quarantine_evidence": {"executed_lines": [399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 56, 74, 113, 129, 141, 163, 226, 273, 291, 350, 396], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_integrity_branch_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]], "functions": {"normalized": {"executed_lines": [42, 51, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "legacy_normalized": {"executed_lines": [64, 73, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw": {"executed_lines": [88, 89, 98, 107, 108, 109, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [], "missing_branches": []}, "readdress_normalized": {"executed_lines": [135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177]], "missing_branches": []}, "test_normalized_manifest_defense_branches": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches": {"executed_lines": [247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 269, 270, 271], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches.mismatched_load": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards": {"executed_lines": [285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [327], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards.wrong_staging_hash": {"executed_lines": [300, 301], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301]], "missing_branches": [[300, 302]]}, "test_normalized_claim_schema_and_manifest_file_shape": {"executed_lines": [340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "test_legacy_normalized_manifest_remains_strictly_verifiable": {"executed_lines": [408, 409, 410, 411], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed": {"executed_lines": [415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414, "executed_branches": [], "missing_branches": []}, "test_legacy_snapshot_rejects_unexpected_file": {"executed_lines": [469, 470, 471, 472, 473], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [], "missing_branches": []}, "test_raw_path_staging_and_archive_negative_guards": {"executed_lines": [484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": []}, "test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed": {"executed_lines": [529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "readdress_curated": {"executed_lines": [581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": []}, "curated": {"executed_lines": [604, 605], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_defense_branches": {"executed_lines": [667, 668, 669, 670], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_file_and_extra_file_guards": {"executed_lines": [679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_l2_reconstructed_empty_level_guard": {"executed_lines": [706, 707, 708], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 63, 85, 128, 180, 231, 243, 281, 339, 357, 402, 414, 468, 480, 528, 574, 603, 617, 661, 678, 705], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "start_line": 1, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]]}}}, "tests\\test_l2_replay.py": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": [], "functions": {"snapshot": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11, "executed_branches": [], "missing_branches": []}, "delta": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "apply_atomic_group": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "test_gap_duplicate_and_out_of_order_are_rejected": {"executed_lines": [122, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_crossed_delta_is_transactional_and_does_not_pollute_state": {"executed_lines": [127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once": {"executed_lines": [138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 170, 175, 176, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160]], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once.counted_assert": {"executed_lines": [167, 168], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_allows_transient_cross_but_commits_valid_final_book": {"executed_lines": [181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [[192, 193], [192, 196], [193, 192], [193, 194]], "missing_branches": []}, "test_atomic_multi_level_group_rejects_bad_row_and_rolls_back": {"executed_lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [[246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}, "test_atomic_multi_level_group_defensive_entry_guards_preserve_state": {"executed_lines": [258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [], "missing_branches": []}, "test_delete_absent_level_and_price_scale_change_are_rejected": {"executed_lines": [308, 309, 310, 317, 318, 319, 320, 321, 322], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [], "missing_branches": []}, "test_checkpoint_mismatch_and_missing_checkpoint_fail": {"executed_lines": [326, 327, 328, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [], "missing_branches": []}, "test_snapshot_duplicate_price_and_cross_are_rejected_by_frozen_contract": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_resync_snapshot_cannot_switch_stream_identity": {"executed_lines": [345, 346, 347, 348, 349, 350, 351, 352], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344, "executed_branches": [], "missing_branches": []}, "test_uninitialized_unsupported_and_non_snapshot_entry_fail_closed": {"executed_lines": [356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_snapshot_and_delta_time_and_sequence_must_strictly_advance": {"executed_lines": [370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369, "executed_branches": [], "missing_branches": []}, "test_validated_snapshot_and_batch_guards_preserve_state": {"executed_lines": [389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [], "missing_branches": []}, "test_private_validated_dispatch_and_uniform_batch_fail_closed": {"executed_lines": [416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 7, 8, 11, 50, 79, 99, 113, 121, 126, 135, 180, 210, 241, 257, 307, 325, 333, 344, 355, 369, 388, 415], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}}}, "tests\\test_m2_audit_regressions.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]], "functions": {"trade": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "raw": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "normalized": {"executed_lines": [78, 79, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable": {"executed_lines": [95, 96, 105, 107, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable.interrupted_replace": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[108, 109], [108, 110]], "missing_branches": []}, "test_preexisting_half_object_is_quarantined_without_blocking_retry": {"executed_lines": [122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_manifest_anchor_detects_coordinated_retention_and_collection_mutation": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_raw_write_read_and_cleanup_reject_junction_escape": {"executed_lines": [159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [171, 188], "excluded_lines": [], "start_line": 158, "executed_branches": [[170, 172], [187, 189]], "missing_branches": [[170, 171], [187, 188]]}, "test_raw_write_rejects_symbolic_link_escape": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "test_cleanup_rejects_fabricated_missing_and_remote_archives": {"executed_lines": [223, 224, 231, 232, 233, 240, 241, 242], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222, "executed_branches": [[231, 232], [231, 240]], "missing_branches": []}, "test_normalized_requires_existing_unmodified_raw_reference": {"executed_lines": [252, 253, 256, 257, 265, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "test_global_event_id_duplicates_across_streams_are_all_quarantined": {"executed_lines": [279, 280, 281, 282, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278, "executed_branches": [], "missing_branches": []}, "test_arrow_canonical_timestamp_and_physical_snapshot_binding": {"executed_lines": [298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [], "missing_branches": []}, "test_duckdb_blocks_direct_cte_and_parameterized_external_reads": {"executed_lines": [326, 327, 328, 331, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [[338, -325], [338, 339]], "missing_branches": []}, "test_curated_rejects_fake_lineage_and_binds_physical_content": {"executed_lines": [344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_normalized_and_curated_writers_apply_capacity_gate": {"executed_lines": [382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 65, 77, 91, 121, 143, 157, 158, 209, 210, 222, 251, 278, 297, 325, 343, 381], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 1, "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]]}}}, "tests\\test_m2_coverage_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": [], "functions": {"_replace": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "test_schema_negative_branch_matrix": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "test_schema_delete_delta_corporate_ratio_and_registry_fail_closed": {"executed_lines": [99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[114, 115], [114, 119]], "missing_branches": []}, "test_data_lake_guard_branches_are_explicit": {"executed_lines": [130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [[135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176]], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable": {"executed_lines": [202, 203, 204, 206, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable.fail_replace": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_raw_manifest_fields_are_independently_anchored": {"executed_lines": [250, 251, 252, 253, 254, 255, 256], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "test_raw_directory_claim_and_cleanup_state_guards": {"executed_lines": [260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [], "missing_branches": []}, "test_quarantine_published_batch_is_fully_verified": {"executed_lines": [302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301, "executed_branches": [[313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322]], "missing_branches": []}, "test_empty_quarantine_and_unknown_event_helpers_are_closed": {"executed_lines": [334, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit": {"executed_lines": [350, 356, 358, 363, 370, 371, 372, 374, 377, 378, 386, 388, 393, 400, 401, 402, 404, 407, 408, 416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.windows_lock": {"executed_lines": [359, 360, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358, "executed_branches": [[360, -358], [360, 361]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.always_contended": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_lock": {"executed_lines": [389, 390, 391], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [[390, -388], [390, 391]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_always_contended": {"executed_lines": [405], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_raw_claim_cleanup_and_deleting_state_tampering_fail_closed": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[444, 448], [444, 457]], "missing_branches": []}, "test_normalized_admission_and_snapshot_metadata_guards": {"executed_lines": [472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_curated_writer_and_reader_negative_guards": {"executed_lines": [512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_and_revision_tampering_are_rejected": {"executed_lines": [571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 64, 93, 98, 129, 198, 235, 244, 259, 300, 301, 333, 349, 425, 471, 511, 570], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": []}}}, "tests\\test_m2_integration.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]], "functions": {"crypto_context": {"executed_lines": [20, 21, 27, 36], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 19, "executed_branches": [[20, 21]], "missing_branches": [[20, 29]]}, "test_public_m2_api_and_version_are_exposed": {"executed_lines": [40, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, -39], [41, 51]], "missing_branches": []}, "test_build_and_runtime_versions_share_one_authoritative_source": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable": {"executed_lines": [62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "test_domestic_fixture_chain_remains_fixture_only": {"executed_lines": [136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 39, 54, 61, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]]}}}, "tests\\test_m2_process_integrity.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]], "functions": {"_raw_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [51, 52, 53, 55, 62, 63, 64, 73, 74, 75], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": [[52, 53], [52, 63]]}, "_raw_process.crash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": [[56, 59], [56, 60]]}, "_cleanup_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [85, 86, 87, 94, 95, 96], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "_quarantine_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [100, 101, 102, 109, 110, 111], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_normalized_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [121, 122, 123, 131, 132, 133], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [137, 138, 139, 141, 146, 147, 148], "excluded_lines": [], "start_line": 136, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process.crash_before_replace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[142, 143], [142, 144]]}, "_normalized_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [156, 158, 163, 164], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "_normalized_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 158, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "_curated_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [180, 181, 182, 194, 195, 196], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [200, 202, 207, 208], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [203, 204, 205], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": [[203, 204], [203, 205]]}, "_hold_staging_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230, 236, 237, 238, 239], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "_run_pair": {"executed_lines": [243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 242, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264]], "missing_branches": [[254, 255]]}, "_raw": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_normalized": {"executed_lines": [282, 283, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_raw_key_lock_is_process_safe": {"executed_lines": [297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, 307], [306, 310]], "missing_branches": []}, "test_raw_key_claim_survives_corruption_and_hard_exit_staging": {"executed_lines": [317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [], "missing_branches": []}, "test_raw_key_claim_is_source_global_across_collection_dates": {"executed_lines": [353, 354, 363, 364, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes": {"executed_lines": [382, 383, 384, 385, 386, 394, 395, 397, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[415, 416], [415, 420]], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes.fail_once": {"executed_lines": [399, 400, 401, 402], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, 400], [399, 402]], "missing_branches": []}, "test_cleanup_same_key_is_process_idempotent": {"executed_lines": [433, 434, 435, 436, 437, 445, 452, 453, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable": {"executed_lines": [461, 462, 463, 464, 466, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable.fail_manifest": {"executed_lines": [468, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466, "executed_branches": [[468, 469], [468, 471]], "missing_branches": []}, "test_adapter_batch_transaction_rolls_back_final_validation_failure": {"executed_lines": [507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[515, 516], [515, 518], [527, 528], [527, 529]], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 579, 580, 581, 589, 590, 591, 599], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry.fail_snapshot_publish": {"executed_lines": [574, 575, 576, 577], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "test_event_claim_and_curated_revision_are_process_safe": {"executed_lines": [603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding": {"executed_lines": [637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovery_is_process_safe": {"executed_lines": [658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 657, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovers_and_preserves_binding": {"executed_lines": [694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovery_is_process_safe": {"executed_lines": [742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 741, "executed_branches": [], "missing_branches": []}, "_curated_process_once": {"executed_lines": [766], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 765, "executed_branches": [], "missing_branches": []}, "test_atomic_normalized_and_curated_staging_recover_after_hard_exit": {"executed_lines": [779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 778, "executed_branches": [[782, 783], [782, 790]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 269, 281, 295, 296, 316, 352, 376, 377, 432, 457, 502, 503, 532, 602, 636, 657, 693, 741, 765, 778], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 1, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]]}}}, "tests\\test_normalized_v3.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": [], "functions": {"_record_batch": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "_strict_batches": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "_assert_no_snapshot": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_raw": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims": {"executed_lines": [84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134]], "missing_branches": []}, "test_native_writer_validator_matches_frozen_validator_for_l2_edges": {"executed_lines": [139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[150, 151], [150, 154], [154, -138], [154, 155]], "missing_branches": []}, "test_v3_manifest_is_compact_and_does_not_create_per_event_json": {"executed_lines": [163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162, "executed_branches": [[165, 166], [165, 171]], "missing_branches": []}, "test_missing_claim_index_recovers_but_tampering_fails_closed": {"executed_lines": [200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_streaming_writer_applies_capacity_gate_before_partition_write": {"executed_lines": [230, 231, 236, 237, 245], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints": {"executed_lines": [251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248, "executed_branches": [[277, 278], [277, 287]], "missing_branches": []}, "test_record_batch_reader_is_a_supported_strict_input": {"executed_lines": [291, 292, 293, 294, 295, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary": {"executed_lines": [303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 330, 335, 344, 345, 346, 347, 348], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[318, 319], [318, 323], [320, 318], [320, 321]], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary.observed_apply": {"executed_lines": [327, 328], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries": {"executed_lines": [354, 356, 361, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [], "missing_branches": []}, "test_arrow_schema_pit_sequence_and_duplicate_fail_closed": {"executed_lines": [373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372, "executed_branches": [[416, -372], [416, 417]], "missing_branches": []}, "test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected": {"executed_lines": [426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 423, "executed_branches": [[437, 438], [437, 439], [457, -423], [457, 458]], "missing_branches": []}, "test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed": {"executed_lines": [467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464, "executed_branches": [], "missing_branches": []}, "test_arrow_float_schema_preserves_frozen_claims_and_logical_rows": {"executed_lines": [505, 507, 512, 513, 514, 515, 523, 524, 525, 526], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [], "missing_branches": []}, "test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary": {"executed_lines": [540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537, "executed_branches": [], "missing_branches": []}, "test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices": {"executed_lines": [575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[576, 577], [576, 578]], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries": {"executed_lines": [610, 611, 613, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries.fail_snapshot_publish": {"executed_lines": [615, 616, 617, 618], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613, "executed_branches": [[615, 616], [615, 618]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 44, 64, 69, 81, 138, 162, 199, 229, 248, 290, 299, 351, 372, 423, 464, 504, 537, 572, 606], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": []}}}, "tests\\test_normalized_v3_failures.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": [], "functions": {"_encoded_delta_group": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54]], "missing_branches": []}, "_set_path": {"executed_lines": [60, 61, 62, 63], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[61, 62], [61, 63]], "missing_branches": []}, "test_native_l2_validator_exercises_failure_semantics": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "test_input_spool_fallback_and_malformed_records_are_explicit": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [], "missing_branches": []}, "test_digest_and_staging_corruption_guards": {"executed_lines": [143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 139, "executed_branches": [], "missing_branches": []}, "_rewrite_index_manifest": {"executed_lines": [173, 174, 175, 176, 179], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "test_claim_index_manifest_tampering_fails_closed": {"executed_lines": [184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215]], "missing_branches": []}, "test_claim_index_schema_logical_shape_and_missing_manifest_paths": {"executed_lines": [224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221, "executed_branches": [], "missing_branches": []}, "test_v3_claim_conflicts_include_historical_legacy_snapshots": {"executed_lines": [315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314, "executed_branches": [], "missing_branches": []}, "_replace_column": {"executed_lines": [356, 357], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_delta_constraints_fail_closed": {"executed_lines": [434, 435, 436, 441], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_action_quantity_contract": {"executed_lines": [458, 459, 460], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_arrow_common_null_empty_precision_source_and_sequence_guards": {"executed_lines": [468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[484, 485], [484, 486], [487, -467], [487, 488]], "missing_branches": []}, "test_arrow_input_reference_and_empty_batch_contracts": {"executed_lines": [495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries": {"executed_lines": [547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546, "executed_branches": [], "missing_branches": []}, "test_encoded_group_layout_and_concat_helpers_fail_closed": {"executed_lines": [586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585, "executed_branches": [], "missing_branches": []}, "test_encoded_group_checkpoint_and_time_fallbacks_remain_strict": {"executed_lines": [631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[647, 648], [647, 649]], "missing_branches": []}, "test_encoded_atomic_group_negative_gates_publish_nothing": {"executed_lines": [709, 710, 711, 712, 713, 714, 715, 720], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 703, "executed_branches": [], "missing_branches": []}, "test_encoded_atomic_group_duplicate_claim_is_not_bypassed": {"executed_lines": [724, 725, 726, 727, 728, 729, 734], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 723, "executed_branches": [], "missing_branches": []}, "test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts": {"executed_lines": [738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[764, -737], [764, 765]], "missing_branches": []}, "test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing": {"executed_lines": [779, 780, 781, 782, 791], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 776, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_reject_cross_batch_partition_time_regression": {"executed_lines": [795, 796, 797, 798, 799, 804], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 794, "executed_branches": [], "missing_branches": []}, "test_mapping_unsorted_partition_is_sorted_without_changing_events": {"executed_lines": [808, 809, 810, 811, 812, 820, 821, 826], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 807, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path": {"executed_lines": [833, 834, 836, 840, 841, 842, 847, 848, 849], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path.observed_capacity": {"executed_lines": [837, 838], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [], "missing_branches": []}, "test_arrow_common_datetime_is_utc_and_partition_digest_is_strict": {"executed_lines": [853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 852, "executed_branches": [], "missing_branches": []}, "test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts": {"executed_lines": [880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 879, "executed_branches": [], "missing_branches": []}, "test_partition_buffers_reject_internal_schema_and_sort_corruption": {"executed_lines": [907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903, "executed_branches": [[979, 980], [979, 982]], "missing_branches": []}, "test_partition_scans_and_empty_claim_helpers_are_defensive": {"executed_lines": [989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 988, "executed_branches": [], "missing_branches": []}, "test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish": {"executed_lines": [1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1032, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible": {"executed_lines": [1065, 1066, 1067, 1069, 1072, 1073, 1074], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1061, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible.mismatched_load": {"executed_lines": [1070], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1069, "executed_branches": [], "missing_branches": []}, "test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed": {"executed_lines": [1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1077, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults": {"executed_lines": [1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1126, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults.observed_capacity": {"executed_lines": [1148, 1149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1147, "executed_branches": [], "missing_branches": []}, "test_strict_claim_count_fault_does_not_publish": {"executed_lines": [1185, 1186, 1187, 1188], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181, "executed_branches": [], "missing_branches": []}, "test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards": {"executed_lines": [1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1191, "executed_branches": [], "missing_branches": []}, "test_duplicate_spool_ignores_non_string_ids_and_finds_repeats": {"executed_lines": [1240, 1241, 1252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1239, "executed_branches": [], "missing_branches": []}, "test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream": {"executed_lines": [1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1255, "executed_branches": [], "missing_branches": []}, "test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams": {"executed_lines": [1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1281, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 59, 66, 96, 109, 139, 169, 182, 183, 221, 314, 355, 360, 427, 444, 451, 467, 494, 546, 585, 630, 673, 703, 723, 737, 776, 794, 807, 829, 852, 879, 903, 988, 1032, 1061, 1077, 1126, 1181, 1191, 1239, 1255, 1281], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 1, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": []}}}, "tests\\test_panel.py": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_merge_earnings_to_panel": {"executed_lines": [11, 18, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_merge_northbound_to_panel": {"executed_lines": [35, 42, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "test_add_industry_relative_strength": {"executed_lines": [54, 62, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 10, 34, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_alt.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_earnings_forecast_mock": {"executed_lines": [9, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_fetch_earnings_forecast_mock.mock_fetch": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock": {"executed_lines": [26, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock.mock_fetch": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock": {"executed_lines": [41, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock.mock_fetch": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 25, 40], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_prices.py": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_daily_prices_mock": {"executed_lines": [7, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "test_fetch_daily_prices_mock.mock_fetch": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_snapshots.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_snapshot_is_content_addressed_and_idempotent": {"executed_lines": [9, 10, 11, 12, 13, 14], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_snapshot_detects_mutation": {"executed_lines": [18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_storage.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_validate_price_frame_ok": {"executed_lines": [11, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_validate_price_frame_missing_column": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_cache_covers_range": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "test_save_manifest": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "test_should_refresh_cache": {"executed_lines": [50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 27, 33, 39, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_temporal.py": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_point_in_time_join_uses_availability_not_event_date": {"executed_lines": [13, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "test_audit_rejects_future_data": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "test_apply_symbol_lifecycle_keeps_delisted_history": {"executed_lines": [42, 48, 51, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 12, 35, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_universe.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_historical_universe_refuses_survivorship_fallback": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_historical_universe_allows_explicit_current_fallback": {"executed_lines": [22, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 21], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_v2_contract_branches.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": [], "functions": {"fp": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "test_market_event_base_and_simple_event_negative_contracts": {"executed_lines": [57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[77, 78], [77, 80]], "missing_branches": []}, "_bar": {"executed_lines": [111, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "test_bar_contract_rejects_each_structural_violation": {"executed_lines": [128, 129, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[138, -127], [138, 139]], "missing_branches": []}, "_snapshot": {"executed_lines": [144, 149, 150], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_book_snapshot_and_delta_negative_contracts": {"executed_lines": [154, 173, 174, 175, 177, 185, 194, 195, 196], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[173, 174], [173, 177], [194, -153], [194, 195]], "missing_branches": []}, "test_funding_corporate_action_status_and_payload_branches": {"executed_lines": [200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[200, 201], [200, 208], [229, 230], [229, 232]], "missing_branches": []}, "instrument_spec": {"executed_lines": [244, 267, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_reference_contract_negative_branches_and_serializers": {"executed_lines": [272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 42, 56, 110, 127, 143, 153, 199, 243, 271], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}}}, "tests\\test_v2_contracts.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": [], "functions": {"fp": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_fixed_point_is_exact_and_utc_is_strict": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_instrument_spec_matches_json_and_arrow_contracts": {"executed_lines": [91, 109, 110, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "test_market_clock_uses_explicit_trading_day": {"executed_lines": [117, 127, 128, 129, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "test_trade_and_quote_events_enforce_causal_time": {"executed_lines": [134, 140, 141, 148, 149, 150, 151, 152], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_l2_snapshot_and_delta_are_strictly_sequenced": {"executed_lines": [160, 165, 166, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [], "missing_branches": []}, "test_public_json_validation_enforces_event_semantics": {"executed_lines": [187, 193, 194, 195, 196, 197, 199, 200, 201, 202], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [], "missing_branches": []}, "test_public_stream_validation_rejects_duplicate_and_out_of_order_records": {"executed_lines": [206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "test_stream_validation_connects_l2_snapshot_to_first_delta": {"executed_lines": [242, 249, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_reference_json_validation_matches_dataclass_semantics": {"executed_lines": [266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "test_all_event_arrow_schemas_require_sequence_and_l2_lists_require_items": {"executed_lines": [286, 297, 298, 299, 300], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[286, 297], [286, 298]], "missing_branches": []}, "test_asset_specific_events_match_registered_schemas": {"executed_lines": [304, 310, 311, 318, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[318, -303], [318, 323]], "missing_branches": []}, "test_bitemporal_join_never_uses_future_knowledge": {"executed_lines": [327, 334, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_all_frozen_v2_golden_records_match_json_and_arrow_field_contracts": {"executed_lines": [350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [[367, -349], [367, 368]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 63, 77, 90, 116, 133, 159, 186, 205, 241, 265, 285, 303, 326, 349], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": []}}}, "tools\\benchmark_capture_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 91, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170, 171, 172, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 197, 219, 220, 223, 228, 233, 234, 235, 238, 240, 241, 242, 243, 244, 245, 246, 247, 259, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 201, "num_statements": 324, "percent_covered": 62.121212121212125, "percent_covered_display": "62", "missing_lines": 123, "excluded_lines": 0, "percent_statements_covered": 62.03703703703704, "percent_statements_covered_display": "62", "num_branches": 72, "num_partial_branches": 9, "covered_branches": 45, "missing_branches": 27, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131, 173, 194, 221, 224, 225, 226, 229, 230, 269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286, 296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308, 443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139], [149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174], [186, -185], [241, 242], [241, 243], [312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123], [172, 173], [186, 194], [278, 279], [278, 280], [281, 282], [281, 283], [302, 303], [302, 304], [364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]], "functions": {"ProviderBatchingExecutor.__init__": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "ProviderBatchingExecutor.submit": {"executed_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [88], "excluded_lines": [], "start_line": 73, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89]], "missing_branches": [[82, 87], [87, 88]]}, "ProviderBatchingExecutor._flush_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [92, 93, 94], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": [[93, -91], [93, 94]]}, "ProviderBatchingExecutor._launch_locked": {"executed_lines": [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 121], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [[99, 100], [99, 101], [101, 102], [101, 103]], "missing_branches": []}, "ProviderBatchingExecutor._launch_locked.complete": {"executed_lines": [109, 110, 111, 112, 114, 115, 116, 117, 118, 119], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [113], "excluded_lines": [], "start_line": 108, "executed_branches": [[112, 118], [115, 116], [115, 117], [118, -108], [118, 119]], "missing_branches": [[112, 113]]}, "ProviderBatchingExecutor.shutdown": {"executed_lines": [124, 125, 126, 127, 128, 129, 132, 133, 134], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [130, 131], "excluded_lines": [], "start_line": 123, "executed_branches": [[126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134]], "missing_branches": [[129, 130], [130, 131], [130, 132], [132, -123]]}, "ProviderBatchingExecutor.assert_quiescent": {"executed_lines": [137, 138, 139], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[138, -136], [138, 139]], "missing_branches": []}, "BenchmarkTiming.mark_workload_completed": {"executed_lines": [149, 150, 151], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[149, 150], [149, 151]], "missing_branches": []}, "BenchmarkTiming.mark_pool_closed": {"executed_lines": [154, 155, 156], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[154, 155], [154, 156]], "missing_branches": []}, "BenchmarkTiming.workload_seconds": {"executed_lines": [160, 161, 162], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [[160, 161], [160, 162]], "missing_branches": []}, "BenchmarkTiming.worker_teardown_seconds": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[166, 167], [166, 168]], "missing_branches": []}, "BenchmarkTiming.total_wall_seconds": {"executed_lines": [172, 174], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [173], "excluded_lines": [], "start_line": 171, "executed_branches": [[172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario.__post_init__": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [224, 225, 226], "excluded_lines": [], "start_line": 223, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230], "excluded_lines": [], "start_line": 228, "executed_branches": [], "missing_branches": []}, "FixtureHttp.__init__": {"executed_lines": [235, 238], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [], "missing_branches": []}, "FixtureHttp.get": {"executed_lines": [241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [269, 270, 271, 272], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "FixtureConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [275], "excluded_lines": [], "start_line": 274, "executed_branches": [], "missing_branches": []}, "FixtureConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [278, 279, 280, 281, 282, 283], "excluded_lines": [], "start_line": 277, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [286], "excluded_lines": [], "start_line": 285, "executed_branches": [], "missing_branches": []}, "FixtureConnector.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [296, 297, 298, 299], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "FixtureConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "_book_levels": {"executed_lines": [312, 313, 314, 315, 316], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311, "executed_branches": [[312, 313], [312, 314]], "missing_branches": []}, "_update_levels": {"executed_lines": [329, 330, 331, 332], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[330, 331], [330, 332]], "missing_branches": []}, "_messages": {"executed_lines": [338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432]], "missing_branches": [[364, 366]]}, "_expected_normalized_rows": {"executed_lines": [436, 437, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435, "executed_branches": [], "missing_branches": []}, "_percentile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [443, 444, 445, 446, 447], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": [[443, 444], [443, 445]]}, "_event_loop_sampler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [451, 452, 453, 454, 455, 456, 457], "excluded_lines": [], "start_line": 450, "executed_branches": [], "missing_branches": [[453, -450], [453, 454]]}, "_git_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [461, 468, 477], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "_run_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [485, 486, 487, 488, 489, 494, 495, 496, 502, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": [[494, 495], [494, 496]]}, "_run_benchmark.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [503], "excluded_lines": [], "start_line": 502, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": [[699, 700], [699, 701]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 322, 335, 435, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 89, "num_statements": 90, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.88888888888889, "percent_statements_covered_display": "99", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [718], "excluded_lines": [], "start_line": 1, "executed_branches": [[717, -1]], "missing_branches": [[717, 718]]}}, "classes": {"ProviderBatchingExecutor": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 124, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 139], "summary": {"covered_lines": 58, "num_statements": 65, "percent_covered": 83.15789473684211, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 89.23076923076923, "percent_statements_covered_display": "89", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 9, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123]]}, "BenchmarkTiming": {"executed_lines": [149, 150, 151, 154, 155, 156, 160, 161, 162, 166, 167, 168, 172, 174], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [173], "excluded_lines": [], "start_line": 143, "executed_branches": [[149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 178, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221, 224, 225, 226, 229, 230], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "FixtureHttp": {"executed_lines": [235, 238, 241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 118, "num_statements": 203, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 58.12807881773399, "percent_statements_covered_display": "58", "num_branches": 22, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "55"}, "missing_lines": [443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "start_line": 1, "executed_branches": [[312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]]}}}, "tools\\benchmark_normalized_l2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 164, "num_statements": 215, "percent_covered": 73.51778656126483, "percent_covered_display": "74", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 76.27906976744185, "percent_statements_covered_display": "76", "num_branches": 38, "num_partial_branches": 10, "covered_branches": 22, "missing_branches": 16, "percent_branches_covered": 57.89473684210526, "percent_branches_covered_display": "58"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [187, -186], [187, 188], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]], "functions": {"synthetic_l2_events": {"executed_lines": [57, 59, 85, 86], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [58], "excluded_lines": [], "start_line": 55, "executed_branches": [[57, 59], [85, -55], [85, 86]], "missing_branches": [[57, 58]]}, "_repeat": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "synthetic_l2_batches": {"executed_lines": [111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [112, 114], "excluded_lines": [], "start_line": 109, "executed_branches": [[111, 113], [113, 115], [128, -109], [128, 129]], "missing_branches": [[111, 112], [113, 114]]}, "_PeakRssSampler.__init__": {"executed_lines": [180, 181, 182, 183, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler._sample": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "_PeakRssSampler.__enter__": {"executed_lines": [191, 192], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler.__exit__": {"executed_lines": [195, 196, 197], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "_profile_storage_stages": {"executed_lines": [202, 217, 222, 225, 229, 231, 232, 243, 244, 245, 247, 248], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[229, 231], [229, 244], [247, -200], [247, 248]], "missing_branches": []}, "_profile_storage_stages.measured": {"executed_lines": [235, 236, 237, 239, 240, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232, "executed_branches": [], "missing_branches": []}, "_git_identity": {"executed_lines": [252, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "_git_identity.git": {"executed_lines": [253, 260], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252, "executed_branches": [], "missing_branches": []}, "_tree_bytes": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_disk_roots": {"executed_lines": [274, 280, 281, 282, 284, 285, 286], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [283], "excluded_lines": [], "start_line": 273, "executed_branches": [[281, 282], [281, 286], [282, 284]], "missing_branches": [[282, 283]]}, "_disk_usage": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "_run_once_independent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [308, 309, 329, 330, 331, 335, 336, 337], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[330, 331], [330, 335]]}, "_run_once": {"executed_lines": [347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [369, 389], "excluded_lines": [], "start_line": 340, "executed_branches": [[368, 370], [388, 390]], "missing_branches": [[368, 369], [388, 389]]}, "run_benchmark": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 5, "percent_branches_covered": 37.5, "percent_branches_covered_display": "38"}, "missing_lines": [428, 430, 467, 468, 469, 470, 471], "excluded_lines": [], "start_line": 414, "executed_branches": [[427, 429], [429, 431], [466, 472]], "missing_branches": [[427, 428], [429, 430], [466, 467], [468, 469], [468, 470]]}, "_parser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": [[565, 566], [565, 576]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 105, 109, 178, 179, 186, 190, 194, 200, 201, 251, 269, 273, 289, 301, 340, 414, 534, 557, 596], "summary": {"covered_lines": 57, "num_statements": 58, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.27586206896552, "percent_statements_covered_display": "98", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [597], "excluded_lines": [], "start_line": 1, "executed_branches": [[596, -1]], "missing_branches": [[596, 597]]}}, "classes": {"_PeakRssSampler": {"executed_lines": [180, 181, 182, 183, 184, 187, 188, 191, 192, 195, 196, 197], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 186, 190, 194, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 152, "num_statements": 203, "percent_covered": 71.96652719665272, "percent_covered_display": "72", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 74.8768472906404, "percent_statements_covered_display": "75", "num_branches": 36, "num_partial_branches": 10, "covered_branches": 20, "missing_branches": 16, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "start_line": 1, "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]]}}}}, "totals": {"covered_lines": 12629, "num_statements": 13454, "percent_covered": 92.58597312954518, "percent_covered_display": "93", "missing_lines": 825, "excluded_lines": 34, "percent_statements_covered": 93.86799464843169, "percent_statements_covered_display": "94", "num_branches": 2772, "num_partial_branches": 240, "covered_branches": 2394, "missing_branches": 378, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/pytest-hardexit-junit-sha256-1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11.xml b/validation/m7-capture-remediation-v3/artifacts/pytest-hardexit-junit-sha256-1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11.xml new file mode 100644 index 0000000..0461595 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/pytest-hardexit-junit-sha256-1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/pytest-main-junit-sha256-a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181.xml b/validation/m7-capture-remediation-v3/artifacts/pytest-main-junit-sha256-a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181.xml new file mode 100644 index 0000000..e932865 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/pytest-main-junit-sha256-a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181.xml @@ -0,0 +1 @@ +H:\Documents\ChatGPT\temp\puresaber-quant-platform\.worktrees\quant-data-kit-m7\tests\test_m2_audit_regressions.py:209: POSIX symbolic-link regression \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/sparse-round-01-sha256-252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f.json b/validation/m7-capture-remediation-v3/artifacts/sparse-round-01-sha256-252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f.json new file mode 100644 index 0000000..6424704 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/sparse-round-01-sha256-252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.163839414457486,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.163839414457487},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:40:11.244447Z","report_sha256":"9d6b28d0e400213cbdfd6d68ee4ff822cda106fc227fe24b43297855f644b2aa","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.979497600001196,"event_loop_delay_p95_milliseconds":15.122799999517156,"event_loop_delay_p99_milliseconds":17.380900000716792,"event_loop_delay_samples":445,"last_epoch_submit_seconds":4.500317699999869,"normalization_group_window_seconds":2.4907075999981316,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1145.0680920068846,"throughput_websocket_messages_per_second":573.107153156599,"total_wall_seconds":7.043827699999383,"worker_teardown_seconds":0.0643300999981875,"workload_elapsed_seconds":6.979497600001196},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/sparse-round-02-sha256-f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d.json b/validation/m7-capture-remediation-v3/artifacts/sparse-round-02-sha256-f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d.json new file mode 100644 index 0000000..cd61562 --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/sparse-round-02-sha256-f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.331819605858602,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.331819605858601},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:40:19.137267Z","report_sha256":"a0c45a5618e67b6d5c1badae8d9bcc578985bc9d5a4ce5fd4a21a823d99b6e6f","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.819589499998983,"event_loop_delay_p95_milliseconds":15.025900000182446,"event_loop_delay_p99_milliseconds":16.06099999844446,"event_loop_delay_samples":442,"last_epoch_submit_seconds":4.377249599998322,"normalization_group_window_seconds":2.4309891000011703,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1171.918045800439,"throughput_websocket_messages_per_second":586.5455684686881,"total_wall_seconds":6.879707500000222,"worker_teardown_seconds":0.060118000001239125,"workload_elapsed_seconds":6.819589499998983},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/artifacts/sparse-round-03-sha256-c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038.json b/validation/m7-capture-remediation-v3/artifacts/sparse-round-03-sha256-c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038.json new file mode 100644 index 0000000..0d8b1ba --- /dev/null +++ b/validation/m7-capture-remediation-v3/artifacts/sparse-round-03-sha256-c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038.json @@ -0,0 +1 @@ +{"collector_commit":"a4a5a16542a2c4c74edf8205b982c681248517a3","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.364013620713038,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.364013620713038},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T11:40:26.990590Z","report_sha256":"31d1a87eeb19b49f65543215b6ef461e014e825864f6b80226106a77ff0073cc","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.789775600002031,"event_loop_delay_p95_milliseconds":15.02260000052047,"event_loop_delay_p99_milliseconds":16.22010000210139,"event_loop_delay_samples":442,"last_epoch_submit_seconds":4.369439100002637,"normalization_group_window_seconds":2.423860999999306,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1177.063937134772,"throughput_websocket_messages_per_second":589.1210896570431,"total_wall_seconds":6.847486900001968,"worker_teardown_seconds":0.05771129999993718,"workload_elapsed_seconds":6.789775600002031},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v3/evidence-manifest.json b/validation/m7-capture-remediation-v3/evidence-manifest.json new file mode 100644 index 0000000..38b380b --- /dev/null +++ b/validation/m7-capture-remediation-v3/evidence-manifest.json @@ -0,0 +1,102 @@ +{ + "schema_version": "puresaber.m7-capture-core-remediation-evidence@3.0.0", + "source_commit": "a4a5a16542a2c4c74edf8205b982c681248517a3", + "source_working_tree_dirty": false, + "package_version": "0.7.2", + "requirements_lock_sha256": "fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88", + "certification": { + "software_fixture": "PASS_PENDING_INDEPENDENT_VALIDATION", + "performance": "PASS_PENDING_INDEPENDENT_VALIDATION", + "public_network": "NOT_RUN", + "continuous_days": 0, + "market_data_certified": false + }, + "quality": { + "pytest_passed": 380, + "pytest_skipped": 1, + "pytest_failed": 0, + "mutually_exclusive_partitions": 2, + "source_branch_coverage": "2105/2420=86.98%", + "configured_core_modules_at_least_90_percent": true + }, + "artifacts": [ + { + "label": "dense-round-01", + "path": "artifacts/dense-round-01-sha256-e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933.json", + "sha256": "e11140d81b1b41f0e1ebdb5d4a3dd4c96ee351d9852c296f7814c9f2f1bfc933", + "bytes": 4583 + }, + { + "label": "dense-round-02", + "path": "artifacts/dense-round-02-sha256-fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5.json", + "sha256": "fe6d140242a0e6c0602902bc843ea8fad5ae188983508ccbfa3a195dbb79d7c5", + "bytes": 4582 + }, + { + "label": "dense-round-03", + "path": "artifacts/dense-round-03-sha256-659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73.json", + "sha256": "659935e7d5ecab5b337e7a4fb291701b5d91e9c426d2de265316d6140e727a73", + "bytes": 4585 + }, + { + "label": "sparse-round-01", + "path": "artifacts/sparse-round-01-sha256-252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f.json", + "sha256": "252e65e25377d069aaa898f313585bd3681e1b93be5a5e87bc67e3edbb20867f", + "bytes": 4407 + }, + { + "label": "sparse-round-02", + "path": "artifacts/sparse-round-02-sha256-f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d.json", + "sha256": "f54ceca2bf61ac9b381dc392d1e529f5c0de322463d3b023cfcc94c0aab3d41d", + "bytes": 4408 + }, + { + "label": "sparse-round-03", + "path": "artifacts/sparse-round-03-sha256-c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038.json", + "sha256": "c411d80d9252d800f828dbd6b26e08a419287db5d453777f4e9b842fb1a90038", + "bytes": 4405 + }, + { + "label": "full-coverage", + "path": "artifacts/full-coverage-sha256-125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748.json", + "sha256": "125261fe2ba6168facd2da277ea67259a5f8e8259b4a507226573434da9ed748", + "bytes": 1146594 + }, + { + "label": "pytest-main-junit", + "path": "artifacts/pytest-main-junit-sha256-a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181.xml", + "sha256": "a79429a870d642e2f8396ba512fcfa64307eab701e67ae70f39758ffe60b5181", + "bytes": 54674 + }, + { + "label": "pytest-hardexit-junit", + "path": "artifacts/pytest-hardexit-junit-sha256-1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11.xml", + "sha256": "1fc5c0bc8c5bbf944ec667bfaba10e345db3d15016bbebefc632c4f5793efa11", + "bytes": 395 + }, + { + "label": "data-10m-3run", + "path": "artifacts/data-10m-3run-sha256-5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f.json", + "sha256": "5ae10ab5c4f06a72e0d3e4c60f6b5e6fee66264a7d8cfb02e14a93f86f13f70f", + "bytes": 24500 + }, + { + "label": "capacity-preflight-refusal", + "path": "artifacts/capacity-preflight-refusal-sha256-2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446.json", + "sha256": "2ebe6c138edbc64270ce28964b2517849cbea0abdbb6d374c28892c0348b7446", + "bytes": 6583 + }, + { + "label": "capacity-run-refusal", + "path": "artifacts/capacity-run-refusal-sha256-54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5.json", + "sha256": "54e0a2420a093ce23059ae55252d9544811936f8ba2236bded44184d814678d5", + "bytes": 6583 + }, + { + "label": "cli-invocation-results", + "path": "artifacts/cli-invocation-results-sha256-99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380.json", + "sha256": "99f803ab40c032e4e5b0c7b7ea47de3630438bd46469e637a29d5e511fc75380", + "bytes": 1396 + } + ] +} diff --git a/validation/m7-capture-remediation-v3/summary.md b/validation/m7-capture-remediation-v3/summary.md new file mode 100644 index 0000000..35b5b00 --- /dev/null +++ b/validation/m7-capture-remediation-v3/summary.md @@ -0,0 +1,118 @@ +# M7 Normalized epoch reconciliation candidate evidence + +## Decision boundary + +- Source commit:`a4a5a16542a2c4c74edf8205b982c681248517a3`, clean working tree at every + source-dependent test and benchmark. +- Branch:`codex/cross-asset-v2-m7-data-performance`; PR`PureSaber/quant-data-kit#6` + remains open and unmerged. +- This candidate supersedes the software acceptance decision for + `validation/m7-capture-remediation-v2`; that historical evidence remains immutable. +- Software, deterministic fixture and local performance gates pass pending a new independent + read-only validation of the two previously reported P2 findings. +- Public Binance/OKX network capture was not run. Continuous days remain0 and + `market_data_certified=false`. +- No API key, account endpoint, order route, live order or destructive cleanup was used. + +## Closed P2 findings and invariants + +Normalized publication now uses an immutable`PREPARED -> COMMITTED | ABORTED`protocol. A fully +validated PREPARED record is persisted before any snapshot becomes visible. COMMITTED binds the +receipt to the PREPARED hash; a publication failure or explicit abort seals ABORTED. Startup scans +all journals and reconciles recoverable PREPARED or retryable ABORTED transactions before creating +any network runner. Invalid identities, hashes, filenames, policies, parts, Raw lineage, terminal +records or state transitions fail closed. + +The journal root, directory creation, opens, reads, seals and recovery path all use the same +component-wise path guard. Symbolic links, reparse points and Windows junctions are rejected. Sealed +parts are create-if-absent hard links followed by a hash check, so an existing immutable name is not +overwritten. Tests include a real Windows`mklink /J`junction and a separate-process termination +after snapshot publication but before the COMMITTED receipt; restart reconciliation commits that +pending transaction idempotently before network startup. + +## Quality gates + +Environment: isolated`.venv-m7-verify`, Python3.12.5, package0.7.2, +`requirements.lock`SHA-256 +`fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88`. + +| Gate | Result | +|---|---| +| Isolated`pip check` | PASS; no broken requirements | +|`ruff check .` | PASS | +|`ruff format --check .` | PASS;88 files unchanged | +| Mutually exclusive pytest partitions | PASS;380 passed,0 failed,1 existing platform skip | +| Full source pure branch coverage | PASS;2105/2420=86.98%, required>=80% | +| Every configured core module | PASS;all17 modules>=90% | +|`capture_v2/epoch.py` |144/154=93.51% | +|`capture_v2/collector.py` |85/94=90.43% | +|`capture_v2/storage.py` |122/132=92.42% | + +The formal coverage run uses two non-overlapping partitions. The main partition has379 passes and +one existing skip; the isolated native hard-exit case has one pass. This is deliberate because a +single Windows Coverage process can intermittently receive native exit`0xC0000005`instead of the +test's intended hard-exit code in the unrelated existing process-integrity case. The full +process-integrity file and isolated case passed in diagnostics. No failed attempt is promoted as +evidence, and the two JUnit files prove that every collected test belongs to exactly one passing +partition. + +## Deterministic eight-stream capture benchmarks + +Both fixture scenarios include exact Raw frames, Raw segment publication, Normalized publication, +archive copy, restore hash verification and complete worker shutdown. Each run reports source +commit`a4a5a165...`, `working_tree_dirty=false`, consistency true and gate true. + +| Scenario | Rounds | Messages/round | Normalized rows/round | Messages/s | Rows/s | p99 | +|---|---:|---:|---:|---:|---:|---:| +| Dense20+20 levels/update |3 |8,000 |319,688 |305.35/300.15/313.42 |12,202.29/11,994.19/12,524.51 |36.37/41.68/36.88ms | +| Sparse1+1 level/update |3 |4,000 |7,992 |573.11/586.55/589.12 |1,145.07/1,171.92/1,177.06 |17.38/16.06/16.22ms | + +The dense gate requires at least240messages/s, scenario-density rows at3x the frozen80messages/s +live offer rate, and p99 at most100ms. Dense safety multiples are3.75-3.92; sparse safety multiples +are7.16-7.36. All six rounds pass. + +## Three independent10-million-event runs + +All runs use the exact candidate source in clean state, execute in independent processes, accept +all10,000,000 valid events, quarantine0, pass strict reload, and retain3,310,487,778bytes without +cleanup. + +| Run | Events/s | Peak RSS | Result | +|---:|---:|---:|---| +|1 |186,268.54 |3.128GiB | PASS | +|2 |189,471.96 |3.137GiB | PASS | +|3 |188,457.43 |3.112GiB | PASS | + +The deterministic snapshot, manifest and final L2 checkpoint hashes match across all three runs. +The minimum throughput has86.3% headroom over the100,000events/s gate and peak memory stays below +the16GiB limit. + +## Capacity refusal and exact CLI evidence + +The exact candidate was invoked through the installed`qdk-capture.exe`entry point in safe +`preflight`mode and explicit`run --confirm-long-running`mode. Both returned exit code2 and immutable +`PAUSED_PREFLIGHT_FAILED`reports before network startup because the archive projection after the +150GiB reserve was approximately63.0GB, below the199,710,735,564-byte safety floor. All eight +streams report0WebSocket messages and`long_running_capture_started=false`. + +The content-addressed`cli-invocation-results`artifact records exact argv, config hash, exit codes, +run IDs and report hashes. This closes the previous evidence-only observation that the generated +run report did not itself preserve CLI argv and process exit code. + +## Remaining certification risks + +- Public Binance/OKX TLS, snapshot bridge, reconnect/resync and real-message data quality remain + unverified by this candidate evidence. +- Current archive capacity cannot support the required retained30-day eight-stream run; fail-closed + behavior is correct, but the external storage blocker remains. +- No30-day continuous retained data, restore drill or cross-source real-market quality report exists. +- Domestic L2 still requires legally authorized market data and remains fixture-certified only. +- The Windows native hard-exit/Coverage interaction remains a test-infrastructure risk; CI does not + skip the test, and the formal evidence executes it in a separate mutually exclusive partition. +- GitHub Python3.10/3.11/3.12 CI on the evidence commit and a new independent read-only validation + are still required before the software/fixture status can be promoted from pending. + +All13 evidence artifacts are content-addressed, byte-preserved by a local`.gitattributes`, and +enumerated in`evidence-manifest.json`. Existing +`validation/m7-capture`, `validation/m7-capture-remediation-v2`and historical performance evidence +were not rewritten. diff --git a/validation/m7-capture-remediation-v3/technical-handoff.md b/validation/m7-capture-remediation-v3/technical-handoff.md new file mode 100644 index 0000000..650305e --- /dev/null +++ b/validation/m7-capture-remediation-v3/technical-handoff.md @@ -0,0 +1,67 @@ +# M7 Normalized epoch reconciliation technical handoff + +## 1. Scope and acceptance conditions + +Scope is the two P2 findings from the prior independent validation: eliminate the visible +Normalized-snapshot-before-receipt crash window, and apply full reparse/junction safety to every +epoch-journal filesystem operation. Acceptance requires immutable transaction states, deterministic +startup reconciliation before network creation, fail-closed validation of all bindings, a real +Windows junction rejection test, a process-termination recovery test, full quality and branch +gates, three dense and three sparse fixture benchmarks, three retained10-million-event runs, and +capacity refusal through the real CLI. + +It explicitly excludes real orders, authenticated APIs, public-network certification,30-day live +capture, domestic market-data certification and any claim of GA readiness. + +## 2. Modified files + +Source commit`a4a5a16542a2c4c74edf8205b982c681248517a3`changes: + +- Transaction protocol and reconciliation:`src/quant_data_kit/capture_v2/epoch.py`. +- Pre-network startup reconciliation:`src/quant_data_kit/capture_v2/collector.py`. +- Safe idempotent directory creation:`src/quant_data_kit/capture_v2/storage.py`. +- Negative, crash, retry, lineage and junction tests: + `tests/test_capture_v2_remediation.py`, `tests/test_benchmark_capture_v2.py`, and the impacted + integration test. +- Version and documentation:`src/quant_data_kit/_version.py`, `README.md`, and + `docs/m7-crypto-l2-capture.md`. + +This evidence commit only adds`validation/m7-capture-remediation-v3`; it does not rewrite historical +evidence. Rollback is a Git revert of the source and evidence commits; no data migration, tag +movement or deletion is required. + +## 3. Test commands, results and evidence + +Executed command families include: + +```text +.venv-m7-verify/Scripts/python -m pip check +.venv-m7-verify/Scripts/python -m ruff check . +.venv-m7-verify/Scripts/python -m ruff format --check . +.venv-m7-verify/Scripts/python -m coverage run --branch -m pytest
--junitxml=pytest-main-junit.xml +.venv-m7-verify/Scripts/python -m coverage run --append --branch -m pytest tests/test_m2_process_integrity.py::test_atomic_normalized_and_curated_staging_recover_after_hard_exit --junitxml=pytest-hardexit-junit.xml +.venv-m7-verify/Scripts/python tools/check_branch_coverage.py coverage.json +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario dense-burst --messages-per-stream 1000 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario sparse --messages-per-stream 500 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_normalized_l2.py --rows 10000000 --runs 3 --batch-rows 262144 --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 ... +.venv-m7-verify/Scripts/qdk-capture.exe --mode preflight +.venv-m7-verify/Scripts/qdk-capture.exe --mode run --confirm-long-running +``` + +Results:380 passed,1 existing platform skip,0 failures; all17 configured core modules exceed90% +pure branch coverage and all source is86.98%; all six capture rounds pass; all three10M runs pass; +both CLI invocations exit2 before network and report0WebSocket messages. Logs and exact hashes are +in`summary.md`, `evidence-manifest.json`, both JUnit artifacts, the coverage artifact, the benchmark +reports, the two run reports and the CLI invocation artifact. + +## 4. Remaining risks and dependencies + +- Provision an independent archive target that preserves the150GiB reserve while staying above the + 20%/100GiB floor, then repeat preflight before any bounded public probe. +- Confirm public Binance/OKX TLS access on the capture host, then run bounded real-message probes. +- Complete retained30-day capture, archive restore drill and cross-source quality review. +- Obtain legally authorized domestic L2 before real-market certification. +- Keep the native Windows hard-exit test isolated under formal Coverage until the + `0xC0000005`interaction is explained or eliminated; do not skip it in CI. +- GitHub Python3.10/3.11/3.12 CI and independent read-only validation are required before accepting + this remediation candidate. From dfb53b02d1bf01ff592b4948475ebdc8e6dd301c Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 20:41:54 +0800 Subject: [PATCH 13/16] Harden epoch recovery terminal validation --- README.md | 2 +- docs/m7-crypto-l2-capture.md | 17 +- src/quant_data_kit/_version.py | 2 +- src/quant_data_kit/capture_v2/collector.py | 4 + src/quant_data_kit/capture_v2/epoch.py | 643 ++++++++++++++++++--- src/quant_data_kit/capture_v2/storage.py | 17 +- tests/test_capture_v2_remediation.py | 499 ++++++++++++++-- tests/test_m2_integration.py | 2 +- 8 files changed, 1026 insertions(+), 160 deletions(-) diff --git a/README.md b/README.md index 52df0e3..e674916 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ safe CLI modes and non-certification boundary are documented in ## M2 data-lake guarantees - Raw persists exact provider bytes through lake-local staging and atomic rename. Its integrity anchor binds source, request, UTC collection time, object/key path identity, SHA-256 and the30-day retention policy. A crash-released process lock and immutable key claim make concurrent writes, crash recovery and cleanup serialize on the same idempotency key. Every write, read and cleanup rejects path escapes and Windows reparse points below the lake root. -- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. Capture epochs persist`PREPARED`before snapshot publication and finish as`COMMITTED`or`ABORTED`; startup reconciles unresolved transactions before opening network connections. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. +- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. Capture epochs persist`PREPARED`before snapshot publication and finish as`COMMITTED`or`ABORTED`; startup uses the frozen stream configuration as an independent identity anchor, validates all PREPARED and terminal records、journal parts、Raw lineage and snapshot identity, rejects conflicting terminal states, and reconciles unresolved transactions before opening network connections. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. - The certified Curated entry is`curate_trade_bars_from_snapshot`: it reads trades from one explicit verified Normalized snapshot, constructs session-aware bars and binds the exact lineage. One`dataset+revision_id`maps to one snapshot; corrected data requires a new revision and never overwrites history. - Normalized and Curated snapshot identities bind Arrow-canonical logical rows and physical Parquet hashes. DuckDB verifies the fixed snapshot, copies Arrow data into in-memory tables, then disables external access; user SQL cannot call file readers or resolve`latest`/`main`. - Collection stops with a visible`COLLECTION_STOPPED`error if hot data would exceed150GB or free space would fall below`max(volume*20%,100GB)`. diff --git a/docs/m7-crypto-l2-capture.md b/docs/m7-crypto-l2-capture.md index 11b0879..51d1e6d 100644 --- a/docs/m7-crypto-l2-capture.md +++ b/docs/m7-crypto-l2-capture.md @@ -55,18 +55,23 @@ Admitted snapshots and deltas are spooled in bounded Normalized epochs. Publicat existing strict Arrow-batch path, PIT checks, schemas, quarantine rules and Raw references. Every finalize attempt persists an immutable`PREPARED`transaction before publishing a visible snapshot, then ends in a content-addressed`COMMITTED`receipt or`ABORTED`failure. Before any network startup, -the coordinator scans all journal parents, validates every transaction and path, and idempotently -replays unresolved`PREPARED`or retryable`ABORTED`transactions. A process termination after snapshot -publication but before receipt publication therefore cannot leave an unaudited snapshot. Gaps or -connection failures explicitly abort the current epoch before resynchronization. +the coordinator anchors every journal to the frozen stream configuration, scans all journal +parents, validates every transaction、terminal-state conflict、journal part、Raw reference、snapshot +identity and path, and idempotently replays unresolved`PREPARED`or retryable`ABORTED`transactions. +A real spawned-process test terminates with`os._exit`after snapshot publication but before receipt +publication and proves that a fresh process commits the transaction before any network runner is +created. A transaction without a durable PREPARED identity blocks startup instead of being skipped. +Gaps or connection failures explicitly abort the current epoch before resynchronization. ## Capacity and independent archive controls `hot_root`、`archive_root`and`restore_root`must be explicit absolute existing directories. The hot and archive roots are resolved through an injectable physical-volume probe; different path strings on the same physical device fail preflight. All three roots and each final parent reject symbolic -links、Windows junctions/reparse points and resolved escapes. This applies to journal creation, -parts, transaction recovery, receipts and abort records as well as Raw/archive paths. Collection takes an exact startup +links、Windows junctions/reparse points and resolved escapes. The bootstrap lock itself is created +and checked as a regular non-reparse object before the file-lock backend may open it. These rules +apply to journal creation, parts, transaction recovery, receipts and abort records as well as +Raw/archive paths. Collection takes an exact startup baseline, reserves every projected write under a thread-safe incremental counter, and repeats real tree/capacity probes at bounded message、byte or monotonic-time intervals. It pauses if projected hot data exceeds150GiB or if free space falls below diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py index f782dab..30d9986 100644 --- a/src/quant_data_kit/_version.py +++ b/src/quant_data_kit/_version.py @@ -1,3 +1,3 @@ """Single authoritative package version used by builds and runtime imports.""" -__version__ = "0.7.2" +__version__ = "0.7.3" diff --git a/src/quant_data_kit/capture_v2/collector.py b/src/quant_data_kit/capture_v2/collector.py index 91b727e..3e24eae 100644 --- a/src/quant_data_kit/capture_v2/collector.py +++ b/src/quant_data_kit/capture_v2/collector.py @@ -709,6 +709,10 @@ async def run(self, *, maximum_websocket_messages: int | None) -> CaptureRunRepo try: reconciled = NormalizedEpochJournal.reconcile_pending( self.config.hot_root, + expected_streams={ + stream.stream_id: (stream.provider.value, stream.venue) + for stream in self.config.streams + }, storage_guard=self.storage_guard, policy=self.policy, normalization_executor=self.normalization_executor, diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py index e2ae06c..23a266f 100644 --- a/src/quant_data_kit/capture_v2/epoch.py +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -29,6 +29,7 @@ from quant_data_kit.data_lake import ( RawObjectReference, StoragePolicy, + validate_raw_reference, write_normalized_batches, ) from quant_data_kit.exceptions import ValidationError @@ -132,6 +133,183 @@ def _load_hashed_json( return payload +def _load_epoch_parts(hot_root: Path, root: Path) -> tuple[EpochPart, ...]: + parts: list[EpochPart] = [] + for path in _validated_glob(hot_root, root, "part-*-sha256-*.ndjson"): + digest = _sha256_file(path, trusted_root=hot_root) + if f"sha256-{digest}.ndjson" not in path.name: + raise ValidationError(f"Normalized recovery part hash changed: {path}") + with _open_journal_file(hot_root, path, "rb") as stream: + rows = sum(1 for line in stream if line.strip()) + parts.append(EpochPart(path.name, rows, digest, path.stat().st_size)) + return tuple(parts) + + +def _parse_created_at(value: object, description: str) -> str: + try: + parsed = datetime.fromisoformat(str(value).replace("Z", "+00:00")) + normalized = utc_text(parsed, f"{description} created_at") + except (TypeError, ValueError) as exc: + raise ValidationError(f"{description} created_at is malformed") from exc + if normalized != value: + raise ValidationError(f"{description} created_at is not canonical UTC") + return normalized + + +def _validate_raw_references( + hot_root: Path, + value: object, + *, + description: str, +) -> tuple[RawObjectReference, ...]: + if not isinstance(value, list) or not all(isinstance(item, Mapping) for item in value): + raise ValidationError(f"{description} Raw lineage is malformed") + try: + references = tuple(RawObjectReference(**item) for item in value) + except (TypeError, ValueError) as exc: + raise ValidationError(f"{description} Raw lineage is malformed") from exc + if any( + not all( + isinstance(field, str) + for field in ( + reference.source, + reference.collection_date, + reference.idempotency_key, + reference.object_id, + reference.content_sha256, + reference.manifest_sha256, + ) + ) + for reference in references + ): + raise ValidationError(f"{description} Raw lineage is malformed") + hashes = [item.manifest_sha256 for item in references] + if len(hashes) != len(set(hashes)): + raise ValidationError(f"{description} Raw lineage contains duplicates") + for reference in references: + validate_raw_reference(hot_root, reference, allow_archived=True) + return references + + +def _validate_prepared_binding( + hot_root: Path, + payload: Mapping[str, Any], + *, + epoch_id: str, + stream_id: str, + provider: str, + venue: str, + policy: StoragePolicy, + actual_parts: tuple[EpochPart, ...], +) -> tuple[RawObjectReference, ...]: + expected_parts = [asdict(item) for item in actual_parts] + attempt = payload.get("attempt") + if ( + payload.get("schema_version") != "puresaber.normalized-epoch-transaction@1.0.0" + or payload.get("transaction_state") != "PREPARED" + or payload.get("epoch_id") != epoch_id + or payload.get("stream_id") != stream_id + or payload.get("provider") != provider + or payload.get("venue") != venue + or payload.get("policy") != asdict(policy) + or isinstance(attempt, bool) + or not isinstance(attempt, int) + or attempt < 1 + ): + raise ValidationError("Normalized epoch PREPARED transaction identity changed") + _parse_created_at(payload.get("created_at"), "Normalized epoch PREPARED transaction") + if payload.get("journal_parts") != expected_parts: + raise ValidationError("Normalized recovery journal part manifest changed") + records = sum(item.rows for item in actual_parts) + recorded = payload.get("records") + if isinstance(recorded, bool) or not isinstance(recorded, int) or recorded != records: + raise ValidationError("Normalized recovery record count changed") + references = _validate_raw_references( + hot_root, + payload.get("raw_references"), + description="Normalized epoch PREPARED transaction", + ) + if records and not references: + raise ValidationError("Normalized epoch records require Raw segment lineage") + return references + + +def _validate_terminal_binding( + hot_root: Path, + payload: Mapping[str, Any], + *, + prepared: Mapping[str, Any] | None, + epoch_id: str, + stream_id: str, + provider: str, + venue: str, + policy: StoragePolicy, + actual_parts: tuple[EpochPart, ...], + schema_version: str, + description: str, +) -> tuple[RawObjectReference, ...]: + expected_identity = { + "epoch_id": epoch_id, + "stream_id": stream_id, + "provider": provider, + "venue": venue, + "policy": asdict(policy), + } + if prepared is not None: + expected_identity["created_at"] = prepared.get("created_at") + if payload.get("schema_version") != schema_version or any( + payload.get(key) != value for key, value in expected_identity.items() + ): + raise ValidationError(f"{description} identity changed") + _parse_created_at(payload.get("created_at"), description) + records = sum(item.rows for item in actual_parts) + recorded = payload.get("records") + if isinstance(recorded, bool) or not isinstance(recorded, int) or recorded != records: + raise ValidationError("Normalized recovery record count changed") + if payload.get("journal_parts") != [asdict(item) for item in actual_parts]: + raise ValidationError("Normalized recovery journal part manifest changed") + if prepared is not None and payload.get("raw_references") != prepared.get("raw_references"): + raise ValidationError(f"{description} Raw lineage changed") + references = _validate_raw_references( + hot_root, + payload.get("raw_references"), + description=description, + ) + if records and not references: + raise ValidationError("Normalized epoch records require Raw segment lineage") + return references + + +def _validate_snapshot_binding( + hot_root: Path, + payload: Mapping[str, Any], + *, + references: tuple[RawObjectReference, ...], + description: str, +) -> None: + values = tuple(payload.get(key) for key in ("records", "accepted_rows", "quarantined_rows")) + if any(isinstance(value, bool) or not isinstance(value, int) for value in values): + raise ValidationError(f"{description} row counts are malformed") + records, accepted, quarantined = values + if min(records, accepted, quarantined) < 0 or accepted + quarantined != records: + raise ValidationError(f"{description} row counts changed") + snapshot_id = payload.get("normalized_snapshot_id") + if snapshot_id is None: + if accepted: + raise ValidationError(f"{description} snapshot identity is missing") + return + if not isinstance(snapshot_id, str): + raise ValidationError(f"{description} snapshot identity is malformed") + snapshot = normalized_v3.load_normalized_snapshot_v3(hot_root, snapshot_id) + if ( + snapshot.provider != payload.get("provider") + or snapshot.venue != payload.get("venue") + or snapshot.rows != accepted + or snapshot.upstream_raw_references != references + ): + raise ValidationError(f"{description} snapshot identity changed") + + def _open_journal_file(hot_root: Path, path: Path, mode: str): allow_missing = "x" in mode checked = _validate_safe_path(hot_root, path, allow_missing=allow_missing) @@ -295,6 +473,7 @@ def recover( explicit_aborts = _validated_glob(hot_root, root, "aborted-sha256-*.json") failures = _validated_glob(hot_root, root, "finalize-failure-*.json") prepared_paths = _validated_glob(hot_root, root, "transaction-prepared-*.json") + actual_parts = _load_epoch_parts(hot_root, root) prepared_payloads = tuple( _load_hashed_json( hot_root, @@ -305,17 +484,19 @@ def recover( for path in prepared_paths ) for item in prepared_payloads: - if ( - item.get("transaction_state") != "PREPARED" - or item.get("epoch_id") != epoch_id - or item.get("stream_id") != stream_id - or item.get("provider") != provider - or item.get("venue") != venue - or item.get("policy") != asdict(policy) - or int(item.get("attempt", 0)) < 1 - ): - raise ValidationError("Normalized epoch PREPARED transaction identity changed") + _validate_prepared_binding( + hot_root, + item, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + ) prepared_by_hash = {str(item["prepared_sha256"]): item for item in prepared_payloads} + if len(prepared_by_hash) != len(prepared_payloads): + raise ValidationError("Normalized epoch contains duplicate PREPARED transactions") receipt_payloads = tuple( _load_hashed_json( hot_root, @@ -325,14 +506,43 @@ def recover( ) for path in receipts ) + terminal_prepared: list[str] = [] for item in receipt_payloads: + prepared = prepared_by_hash.get(str(item.get("prepared_sha256"))) if ( item.get("transaction_state") != "COMMITTED" or item.get("epoch_id") != epoch_id or item.get("stream_id") != stream_id - or str(item.get("prepared_sha256")) not in prepared_by_hash + or prepared is None ): raise ValidationError("Normalized epoch COMMITTED receipt identity changed") + references = _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-receipt@1.3.0", + description="Normalized epoch COMMITTED receipt", + ) + raw_segments = item.get("raw_segments") + if ( + isinstance(raw_segments, bool) + or not isinstance(raw_segments, int) + or raw_segments != len(references) + ): + raise ValidationError("Normalized epoch COMMITTED receipt Raw count changed") + _validate_snapshot_binding( + hot_root, + item, + references=references, + description="Normalized epoch COMMITTED receipt", + ) + terminal_prepared.append(str(item["prepared_sha256"])) abort_payloads = tuple( _load_hashed_json( hot_root, @@ -343,18 +553,40 @@ def recover( for path in explicit_aborts ) for item in abort_payloads: + prepared_sha256 = item.get("prepared_sha256") + prepared = ( + prepared_by_hash.get(str(prepared_sha256)) if prepared_sha256 is not None else None + ) if ( item.get("transaction_state") != "ABORTED" or item.get("epoch_id") != epoch_id or item.get("stream_id") != stream_id - or ( - item.get("prepared_sha256") is not None - and str(item.get("prepared_sha256")) not in prepared_by_hash - ) + or (prepared_sha256 is not None and prepared is None) + or item.get("retryable") is not False ): raise ValidationError("Normalized epoch explicit ABORTED identity changed") - if receipts or explicit_aborts: - raise ValidationError("Normalized epoch is not a retryable failed finalize") + _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-abort@1.3.0", + description="Normalized epoch explicit ABORTED transaction", + ) + terminal_prepared.append( + str(prepared_sha256) if prepared_sha256 is not None else "ABORTED_WITHOUT_PREPARED" + ) + if ( + len(receipt_payloads) > 1 + or len(abort_payloads) > 1 + or (receipt_payloads and abort_payloads) + ): + raise ValidationError("Normalized epoch contains conflicting terminal transactions") failure_payloads = tuple( _load_hashed_json( hot_root, @@ -365,25 +597,61 @@ def recover( for path in failures ) for item in failure_payloads: - if item.get("stream_id") != stream_id or not item.get("retryable_in_process"): - raise ValidationError("Normalized epoch failure record is not recoverable") prepared_sha256 = item.get("prepared_sha256") - if not prepared_sha256: - continue - referenced = prepared_by_hash.get(str(prepared_sha256)) - if referenced is None: + prepared = ( + prepared_by_hash.get(str(prepared_sha256)) if prepared_sha256 is not None else None + ) + if prepared_sha256 is not None and prepared is None: raise ValidationError("Normalized epoch failure transaction identity changed") - if int(item.get("records", -1)) != int(referenced.get("records", -2)): - raise ValidationError("Normalized recovery record count changed") - if item.get("raw_references", []) != referenced.get("raw_references", []): - raise ValidationError("Normalized epoch failure Raw lineage changed") - terminal_prepared = { + if ( + item.get("transaction_state") != "ABORTED" + or item.get("epoch_id") != epoch_id + or item.get("stream_id") != stream_id + or item.get("retryable_in_process") is not True + or isinstance(item.get("attempt"), bool) + or not isinstance(item.get("attempt"), int) + or item.get("attempt", 0) < 1 + ): + raise ValidationError("Normalized epoch failure record is not recoverable") + references = _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + description="Normalized epoch failure record", + ) + if item.get("published_snapshot_id") is not None: + _validate_snapshot_binding( + hot_root, + { + **item, + "normalized_snapshot_id": item.get("published_snapshot_id"), + }, + references=references, + description="Normalized epoch failure record", + ) + elif item.get("accepted_rows") is not None or item.get("quarantined_rows") is not None: + raise ValidationError("Normalized epoch failure snapshot state changed") + terminal_prepared.append( + str(prepared_sha256) if prepared_sha256 is not None else "FAILURE_WITHOUT_PREPARED" + ) + if len(terminal_prepared) != len(set(terminal_prepared)): + raise ValidationError("Normalized epoch contains conflicting terminal transactions") + if receipts or explicit_aborts: + raise ValidationError("Normalized epoch is not a retryable failed finalize") + failed_prepared = { str(item["prepared_sha256"]) for item in failure_payloads if item.get("prepared_sha256") } pending = tuple( item for item in prepared_payloads - if str(item["prepared_sha256"]) not in terminal_prepared + if str(item["prepared_sha256"]) not in failed_prepared ) if len(pending) > 1: raise ValidationError("Normalized epoch contains multiple pending transactions") @@ -394,18 +662,7 @@ def recover( pending[0] if pending else prepared_payloads[-1] if prepared_payloads else None ) if transaction is None: - # Legacy failure records did not persist PREPARED. Preserve manual recovery support. - transaction = { - "epoch_id": epoch_id, - "stream_id": stream_id, - "provider": provider, - "venue": venue, - "records": failure.get("records", -1), - "raw_references": failure.get("raw_references", []), - "journal_parts": None, - "policy": asdict(policy), - "attempt": len(failure_payloads), - } + raise ValidationError("Normalized epoch failure has no durable PREPARED transaction") self = cls.__new__(cls) self.hot_root = hot_root self.epoch_id = epoch_id @@ -421,24 +678,20 @@ def recover( self.monotonic = monotonic self.normalization_executor = normalization_executor self.root = _validate_safe_path(hot_root, root, allow_missing=False) - self._parts = [] - self._records = 0 - for path in _validated_glob(hot_root, root, "part-*-sha256-*.ndjson"): - digest = _sha256_file(path, trusted_root=hot_root) - if f"sha256-{digest}.ndjson" not in path.name: - raise ValidationError(f"Normalized recovery part hash changed: {path}") - with _open_journal_file(hot_root, path, "rb") as stream: - rows = sum(1 for line in stream if line.strip()) - self._parts.append(EpochPart(path.name, rows, digest, path.stat().st_size)) - self._records += rows - self._raw_references = [ - RawObjectReference(**item) for item in transaction.get("raw_references", []) - ] + self._parts = list(actual_parts) + self._records = sum(item.rows for item in actual_parts) + self._raw_references = list( + _validate_raw_references( + hot_root, + transaction.get("raw_references"), + description="Normalized epoch recovery transaction", + ) + ) self._raw_manifest_hashes = {item.manifest_sha256 for item in self._raw_references} if int(transaction.get("records", -1)) != self._records: raise ValidationError("Normalized recovery record count changed") expected_parts = transaction.get("journal_parts") - if expected_parts is not None and expected_parts != [asdict(item) for item in self._parts]: + if expected_parts != [asdict(item) for item in self._parts]: raise ValidationError("Normalized recovery journal part manifest changed") self._open_path = root / "part-open.ndjson" _validate_safe_path(hot_root, self._open_path, allow_missing=True) @@ -465,6 +718,7 @@ def reconcile_pending( cls, hot_root: Path, *, + expected_streams: Mapping[str, tuple[str, str]], storage_guard: CaptureStorageGuard, policy: StoragePolicy = _DEFAULT_POLICY, normalization_executor: Executor | None = None, @@ -480,9 +734,25 @@ def reconcile_pending( for stream_root in _validated_glob(hot_root, base, "stream=*"): if not stream_root.is_dir(): raise ValidationError("Normalized epoch stream journal is not a directory") + stream_id = stream_root.name.removeprefix("stream=") + identity = expected_streams.get(stream_id) + if identity is None or len(identity) != 2: + raise ValidationError( + "Normalized epoch stream lacks an independent identity anchor" + ) + provider, venue = identity for epoch_root in _validated_glob(hot_root, stream_root, "epoch=*"): if not epoch_root.is_dir(): raise ValidationError("Normalized epoch journal is not a directory") + epoch_id = epoch_root.name.removeprefix("epoch=") + actual_parts = _load_epoch_parts(hot_root, epoch_root) + open_part = epoch_root / "part-open.ndjson" + _validate_safe_path(hot_root, open_part, allow_missing=True) + if ( + open_part.exists() + and _validate_safe_path(hot_root, open_part, allow_missing=False).stat().st_size + ): + raise ValidationError("Normalized recovery found an unsealed open part") prepared_paths = _validated_glob( hot_root, epoch_root, "transaction-prepared-*.json" ) @@ -496,17 +766,26 @@ def reconcile_pending( for path in prepared_paths ) for item in prepared_payloads: - if ( - item.get("transaction_state") != "PREPARED" - or stream_root.name != f"stream={item.get('stream_id')}" - or epoch_root.name != f"epoch={item.get('epoch_id')}" - or item.get("policy") != asdict(policy) - ): - raise ValidationError( - "Normalized epoch PREPARED transaction identity changed" - ) - prepared_hashes = {str(item["prepared_sha256"]) for item in prepared_payloads} + _validate_prepared_binding( + hot_root, + item, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + ) + prepared_by_hash = { + str(item["prepared_sha256"]): item for item in prepared_payloads + } + if len(prepared_by_hash) != len(prepared_payloads): + raise ValidationError( + "Normalized epoch contains duplicate PREPARED transactions" + ) + terminal_prepared: list[str] = [] receipt_paths = _validated_glob(hot_root, epoch_root, "receipt-sha256-*.json") + receipt_payloads: list[dict[str, Any]] = [] for path in receipt_paths: item = _load_hashed_json( hot_root, @@ -514,16 +793,46 @@ def reconcile_pending( hash_field="receipt_sha256", description="Normalized epoch receipt", ) + prepared = prepared_by_hash.get(str(item.get("prepared_sha256"))) if ( item.get("transaction_state") != "COMMITTED" - or item.get("prepared_sha256") not in prepared_hashes - or stream_root.name != f"stream={item.get('stream_id')}" - or epoch_root.name != f"epoch={item.get('epoch_id')}" + or prepared is None + or item.get("stream_id") != stream_id + or item.get("epoch_id") != epoch_id ): raise ValidationError("Normalized epoch COMMITTED receipt identity changed") - if receipt_paths: - continue + references = _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-receipt@1.3.0", + description="Normalized epoch COMMITTED receipt", + ) + raw_segments = item.get("raw_segments") + if ( + isinstance(raw_segments, bool) + or not isinstance(raw_segments, int) + or raw_segments != len(references) + ): + raise ValidationError( + "Normalized epoch COMMITTED receipt Raw count changed" + ) + _validate_snapshot_binding( + hot_root, + item, + references=references, + description="Normalized epoch COMMITTED receipt", + ) + receipt_payloads.append(item) + terminal_prepared.append(str(item["prepared_sha256"])) explicit_aborts = _validated_glob(hot_root, epoch_root, "aborted-sha256-*.json") + abort_payloads: list[dict[str, Any]] = [] for path in explicit_aborts: item = _load_hashed_json( hot_root, @@ -531,31 +840,153 @@ def reconcile_pending( hash_field="abort_sha256", description="Normalized epoch explicit ABORTED transaction", ) + prepared_sha256 = item.get("prepared_sha256") + prepared = ( + prepared_by_hash.get(str(prepared_sha256)) + if prepared_sha256 is not None + else None + ) if ( item.get("transaction_state") != "ABORTED" - or ( - item.get("prepared_sha256") is not None - and item.get("prepared_sha256") not in prepared_hashes - ) - or stream_root.name != f"stream={item.get('stream_id')}" - or epoch_root.name != f"epoch={item.get('epoch_id')}" + or item.get("stream_id") != stream_id + or item.get("epoch_id") != epoch_id + or (prepared_sha256 is not None and prepared is None) + or item.get("retryable") is not False ): raise ValidationError("Normalized epoch explicit ABORTED identity changed") - if explicit_aborts: - continue - if not prepared_paths: + _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-abort@1.3.0", + description="Normalized epoch explicit ABORTED transaction", + ) + abort_payloads.append(item) + terminal_prepared.append( + str(prepared_sha256) + if prepared_sha256 is not None + else "ABORTED_WITHOUT_PREPARED" + ) + failure_paths = _validated_glob(hot_root, epoch_root, "finalize-failure-*.json") + failure_payloads: list[dict[str, Any]] = [] + for path in failure_paths: + item = _load_hashed_json( + hot_root, + path, + hash_field="failure_sha256", + description="Normalized epoch failure record", + ) + prepared_sha256 = item.get("prepared_sha256") + prepared = ( + prepared_by_hash.get(str(prepared_sha256)) + if prepared_sha256 is not None + else None + ) + if prepared_sha256 is not None and prepared is None: + raise ValidationError( + "Normalized epoch failure transaction identity changed" + ) + if ( + item.get("transaction_state") != "ABORTED" + or item.get("stream_id") != stream_id + or item.get("epoch_id") != epoch_id + or item.get("retryable_in_process") is not True + or isinstance(item.get("attempt"), bool) + or not isinstance(item.get("attempt"), int) + or item.get("attempt", 0) < 1 + ): + raise ValidationError("Normalized epoch failure record is not recoverable") + references = _validate_terminal_binding( + hot_root, + item, + prepared=prepared, + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, + policy=policy, + actual_parts=actual_parts, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + description="Normalized epoch failure record", + ) + if item.get("published_snapshot_id") is not None: + _validate_snapshot_binding( + hot_root, + { + **item, + "normalized_snapshot_id": item.get("published_snapshot_id"), + }, + references=references, + description="Normalized epoch failure record", + ) + elif ( + item.get("accepted_rows") is not None + or item.get("quarantined_rows") is not None + ): + raise ValidationError("Normalized epoch failure snapshot state changed") + failure_payloads.append(item) + terminal_prepared.append( + str(prepared_sha256) + if prepared_sha256 is not None + else "FAILURE_WITHOUT_PREPARED" + ) + if ( + len(receipt_payloads) > 1 + or len(abort_payloads) > 1 + or (receipt_payloads and abort_payloads) + ): + raise ValidationError( + "Normalized epoch contains conflicting terminal transactions" + ) + if len(terminal_prepared) != len(set(terminal_prepared)): + raise ValidationError( + "Normalized epoch contains conflicting terminal transactions" + ) + terminal_hashes = { + str(item["prepared_sha256"]) + for item in (*receipt_payloads, *abort_payloads, *failure_payloads) + if item.get("prepared_sha256") is not None + } + pending = tuple( + item + for item in prepared_payloads + if str(item["prepared_sha256"]) not in terminal_hashes + ) + if len(pending) > 1: + raise ValidationError("Normalized epoch contains multiple pending transactions") + if receipt_payloads or abort_payloads: + if pending: + raise ValidationError( + "Normalized epoch contains a terminal state followed by pending work" + ) continue - latest = prepared_payloads[-1] + if any(item.get("prepared_sha256") is None for item in failure_payloads): + raise ValidationError( + "Normalized epoch failure has no durable PREPARED transaction" + ) + if not pending and not failure_payloads: + raise ValidationError( + "Normalized epoch journal has no durable transaction state" + ) + latest = pending[0] if pending else prepared_payloads[-1] try: created_at = datetime.fromisoformat( - str(latest["created_at"]).replace("Z", "+00:00") + _parse_created_at( + latest.get("created_at"), "Normalized epoch recovery transaction" + ).replace("Z", "+00:00") ) journal = cls.recover( hot_root, - epoch_id=str(latest["epoch_id"]), - stream_id=str(latest["stream_id"]), - provider=str(latest["provider"]), - venue=str(latest["venue"]), + epoch_id=epoch_id, + stream_id=stream_id, + provider=provider, + venue=venue, storage_guard=storage_guard, policy=policy, normalization_executor=normalization_executor, @@ -571,11 +1002,11 @@ def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochRece self._require_open() prepared: dict[str, Any] | None = None result: _NormalizationSummary | None = None + created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") try: self._seal_part() if self._records and not self._raw_references: raise ValidationError("Normalized epoch records require Raw segment lineage") - created = utc_text(created_at or datetime.now(tz=UTC), "epoch created_at") prepared = self._prepare_transaction(created) result = ( self._publish_normalized() if self._records else _NormalizationSummary(None, 0, 0) @@ -583,7 +1014,12 @@ def finalize(self, *, created_at: datetime | None = None) -> NormalizedEpochRece receipt = self._write_committed_receipt(prepared, result) except Exception as exc: try: - self._record_finalize_failure(exc, prepared=prepared, result=result) + self._record_finalize_failure( + exc, + prepared=prepared, + result=result, + created_at=created, + ) except Exception as abort_exc: # noqa: BLE001 - both failures must be preserved raise ValidationError( "Normalized finalize failed and its durable failure record also failed; " @@ -652,7 +1088,7 @@ def _write_committed_receipt( result: _NormalizationSummary, ) -> NormalizedEpochReceipt: identity = { - "schema_version": "puresaber.normalized-epoch-receipt@1.2.0", + "schema_version": "puresaber.normalized-epoch-receipt@1.3.0", "transaction_state": "COMMITTED", "prepared_sha256": str(prepared["prepared_sha256"]), "epoch_id": self.epoch_id, @@ -664,6 +1100,7 @@ def _write_committed_receipt( "raw_segments": len(self._raw_references), "raw_references": [asdict(item) for item in self._raw_references], "journal_parts": [asdict(item) for item in self._parts], + "policy": asdict(self.policy), "normalized_snapshot_id": result.snapshot_id, "accepted_rows": result.accepted_rows, "quarantined_rows": result.quarantined_rows, @@ -707,21 +1144,27 @@ def abort_visible(self, reason: str) -> Path: raise ValidationError("Normalized epoch is already aborted") if self._state in {"OPEN", "PREPARED"}: if self._state == "OPEN": - self.flush() + self._seal_part() self._open_stream.close() + prepared = self._prepared_transaction payload = { - "schema_version": "puresaber.normalized-epoch-abort@1.2.0", + "schema_version": "puresaber.normalized-epoch-abort@1.3.0", "transaction_state": "ABORTED", - "prepared_sha256": ( - str(self._prepared_transaction["prepared_sha256"]) - if self._prepared_transaction is not None - else None - ), + "prepared_sha256": (str(prepared["prepared_sha256"]) if prepared is not None else None), "epoch_id": self.epoch_id, "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": ( + str(prepared["created_at"]) + if prepared is not None + else utc_text(datetime.now(tz=UTC), "epoch abort created_at") + ), "reason": reason, "records": self._records, "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "policy": asdict(self.policy), "retryable": False, } payload["abort_sha256"] = hashlib.sha256(canonical_json_bytes(payload)).hexdigest() @@ -774,20 +1217,28 @@ def _record_finalize_failure( *, prepared: Mapping[str, Any] | None, result: _NormalizationSummary | None, + created_at: str, ) -> Path: self._finalize_failures += 1 identity = { - "schema_version": "puresaber.normalized-epoch-finalize-failure@1.1.0", + "schema_version": "puresaber.normalized-epoch-finalize-failure@1.2.0", "transaction_state": "ABORTED", "prepared_sha256": (str(prepared["prepared_sha256"]) if prepared is not None else None), "epoch_id": self.epoch_id, "stream_id": self.stream_id, + "provider": self.provider, + "venue": self.venue, + "created_at": (str(prepared["created_at"]) if prepared is not None else created_at), "attempt": self._finalize_failures, "exception": type(exc).__name__, "message": str(exc), "records": self._records, "raw_references": [asdict(item) for item in self._raw_references], + "journal_parts": [asdict(item) for item in self._parts], + "policy": asdict(self.policy), "published_snapshot_id": result.snapshot_id if result is not None else None, + "accepted_rows": result.accepted_rows if result is not None else None, + "quarantined_rows": result.quarantined_rows if result is not None else None, "retryable_in_process": True, "restart_recovery": "reconcile PREPARED/ABORTED transaction idempotently", } diff --git a/src/quant_data_kit/capture_v2/storage.py b/src/quant_data_kit/capture_v2/storage.py index 88c8d27..65756ff 100644 --- a/src/quant_data_kit/capture_v2/storage.py +++ b/src/quant_data_kit/capture_v2/storage.py @@ -718,8 +718,21 @@ def _validate_safe_path(root: Path, candidate: Path, *, allow_missing: bool) -> def _safe_mkdir(root: Path, path: Path, *, exist_ok: bool = True) -> Path: checked = _validate_safe_path(root, path, allow_missing=True) lock = Path(root) / ".capture-path-bootstrap.lock" - with process_file_lock(lock): - _validate_safe_path(root, lock, allow_missing=True) + checked_lock = _validate_safe_path(root, lock, allow_missing=True) + if not checked_lock.exists(): + try: + with checked_lock.open("xb") as stream: + stream.write(b"\0") + stream.flush() + os.fsync(stream.fileno()) + except FileExistsError: + # A concurrent creator won. Validate its final object before opening it. + pass + checked_lock = _validate_safe_path(root, checked_lock, allow_missing=False) + if not checked_lock.is_file(): + raise ValidationError(f"storage bootstrap lock is not a regular file: {checked_lock}") + with process_file_lock(checked_lock): + _validate_safe_path(root, checked_lock, allow_missing=False) checked.mkdir(parents=True, exist_ok=exist_ok) return _validate_safe_path(root, checked, allow_missing=False) diff --git a/tests/test_capture_v2_remediation.py b/tests/test_capture_v2_remediation.py index ef24a79..7b2e3c6 100644 --- a/tests/test_capture_v2_remediation.py +++ b/tests/test_capture_v2_remediation.py @@ -61,6 +61,20 @@ def _process_publish( results.put("ok") +def _process_crash_after_epoch_snapshot(root_text: str, epoch_id: str) -> None: + journal = _journal_with_lineage(Path(root_text), epoch_id) + + def terminate_after_snapshot(*_args: object, **_kwargs: object) -> None: + (Path(root_text) / "receipt-boundary-reached.marker").write_bytes(b"snapshot-published") + os._exit(87) + + journal._write_committed_receipt = ( # type: ignore[method-assign] + terminate_after_snapshot + ) + journal.finalize(created_at=epoch_fixtures.NOW) + os._exit(88) + + def test_durable_audit_commits_before_state_and_reloads(tmp_path: Path) -> None: hot, archive, _restore = collector_fixtures.roots(tmp_path) guard = collector_fixtures.storage_guard(hot, archive) @@ -250,6 +264,32 @@ def _journal_with_lineage(tmp_path: Path, epoch_id: str) -> NormalizedEpochJourn return journal +def _identity_anchor(journal: NormalizedEpochJournal) -> dict[str, tuple[str, str]]: + return {journal.stream_id: (journal.provider, journal.venue)} + + +def _existing_epoch_storage( + root: Path, +) -> tuple[Path, CaptureStorageGuard, dict[str, tuple[str, str]]]: + hot, archive = root / "hot", root / "archive" + + def identity(path: Path) -> VolumeIdentity: + value = "archive" if path == archive else "hot" + return VolumeIdentity(value, (value,)) + + guard = CaptureStorageGuard( + hot, + archive, + policy=epoch_fixtures.POLICY, + archive_reserve_bytes=1, + volume_identity=identity, + capacity_probe=lambda _path: DiskCapacity(10**9, 9 * 10**8), + hot_size_probe=lambda _path: 0, + ) + stream = epoch_fixtures.stream(Provider.BINANCE, epoch_fixtures.MarketKind.SPOT) + return hot, guard, {stream.stream_id: (stream.provider.value, stream.venue)} + + def test_normalized_finalize_publish_failure_retains_journal_and_retries( tmp_path: Path, monkeypatch: pytest.MonkeyPatch ) -> None: @@ -277,29 +317,35 @@ def fail_once(): assert receipt.transaction_state == "COMMITTED" -def test_normalized_crash_after_publish_reconciles_prepared_transaction( - tmp_path: Path, monkeypatch: pytest.MonkeyPatch -) -> None: - journal = _journal_with_lineage(tmp_path, "crash-window") - - def terminate_after_publish(*_args: object, **_kwargs: object): - raise SystemExit("injected process termination") +def test_normalized_crash_after_publish_reconciles_prepared_transaction(tmp_path: Path) -> None: + crash_root = tmp_path / "crash-process" + context = multiprocessing.get_context("spawn") + process = context.Process( + target=_process_crash_after_epoch_snapshot, + args=(str(crash_root), "crash-window"), + ) + process.start() + process.join(30) + assert process.exitcode not in {None, 0, 88} + assert (crash_root / "receipt-boundary-reached.marker").read_bytes() == b"snapshot-published" - monkeypatch.setattr(journal, "_write_committed_receipt", terminate_after_publish) - with pytest.raises(SystemExit, match="process termination"): - journal.finalize(created_at=epoch_fixtures.NOW) - prepared = tuple(journal.root.glob("transaction-prepared-*.json")) + hot, guard, identities = _existing_epoch_storage(crash_root) + stream_id = next(iter(identities)) + journal_root = ( + hot / "capture" / "normalized-epoch-journal" / f"stream={stream_id}" / "epoch=crash-window" + ) + prepared = tuple(journal_root.glob("transaction-prepared-*.json")) assert len(prepared) == 1 - assert not tuple(journal.root.glob("receipt-sha256-*.json")) - assert not tuple(journal.root.glob("finalize-failure-*.json")) - snapshots = tuple((journal.hot_root / "normalized" / "snapshots").glob("sha256-*")) + assert not tuple(journal_root.glob("receipt-sha256-*.json")) + assert not tuple(journal_root.glob("finalize-failure-*.json")) + snapshots = tuple((hot / "normalized" / "snapshots").glob("sha256-*")) assert len(snapshots) == 1 - journal._open_stream.close() receipts = NormalizedEpochJournal.reconcile_pending( - journal.hot_root, - storage_guard=journal.storage_guard, - policy=journal.policy, + hot, + expected_streams=identities, + storage_guard=guard, + policy=epoch_fixtures.POLICY, ) assert len(receipts) == 1 assert receipts[0].transaction_state == "COMMITTED" @@ -307,9 +353,10 @@ def terminate_after_publish(*_args: object, **_kwargs: object): assert receipts[0].normalized_snapshot_id == snapshots[0].name assert ( NormalizedEpochJournal.reconcile_pending( - journal.hot_root, - storage_guard=journal.storage_guard, - policy=journal.policy, + hot, + expected_streams=identities, + storage_guard=guard, + policy=epoch_fixtures.POLICY, ) == () ) @@ -340,12 +387,38 @@ def test_reconciliation_binds_aborts_to_their_prepared_attempt( journal._open_stream.close() receipts = NormalizedEpochJournal.reconcile_pending( journal.hot_root, + expected_streams=_identity_anchor(journal), storage_guard=journal.storage_guard, policy=journal.policy, ) assert len(receipts) == 1 and receipts[0].transaction_state == "COMMITTED" +def test_reconciliation_rejects_conflicting_terminal_states(tmp_path: Path) -> None: + journal = _journal_with_lineage(tmp_path, "terminal-conflict") + receipt = journal.finalize(created_at=epoch_fixtures.NOW) + prepared = json.loads( + next(journal.root.glob("transaction-prepared-*.json")).read_text(encoding="utf-8") + ) + journal._record_finalize_failure( + OSError("impossible post-commit failure"), + prepared=prepared, + result=epoch_module._NormalizationSummary( + receipt.normalized_snapshot_id, + receipt.accepted_rows, + receipt.quarantined_rows, + ), + created_at=receipt.created_at, + ) + with pytest.raises(ValidationError, match="conflicting terminal"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + expected_streams=_identity_anchor(journal), + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + def test_pending_transaction_rejects_mutation_and_malformed_time( tmp_path: Path, monkeypatch: pytest.MonkeyPatch ) -> None: @@ -364,9 +437,10 @@ def test_pending_transaction_rejects_mutation_and_malformed_time( journal._open_stream.close() prepared = next(journal.root.glob("transaction-prepared-*.json")) _rewrite_content_addressed(prepared, "prepared_sha256", created_at="not-a-time") - with pytest.raises(ValidationError, match="PREPARED transaction is malformed"): + with pytest.raises(ValidationError, match="created_at is malformed"): NormalizedEpochJournal.reconcile_pending( journal.hot_root, + expected_streams=_identity_anchor(journal), storage_guard=journal.storage_guard, policy=journal.policy, ) @@ -427,6 +501,41 @@ def test_epoch_creation_rejects_real_windows_junction(tmp_path: Path) -> None: junction.rmdir() +@pytest.mark.skipif(os.name != "nt", reason="requires a real Windows directory junction") +def test_bootstrap_lock_rejects_real_windows_junction_before_lock_open( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + hot, _archive, _guard = epoch_fixtures.storage(tmp_path) + outside = tmp_path / "outside-bootstrap" + outside.mkdir() + sentinel = outside / "sentinel.bin" + sentinel.write_bytes(b"outside-must-not-be-opened") + lock = hot / ".capture-path-bootstrap.lock" + created = subprocess.run( + ["cmd", "/c", "mklink", "/J", str(lock), str(outside)], + check=False, + capture_output=True, + text=True, + ) + assert created.returncode == 0, created.stderr + lock_opened = False + + def must_not_open_lock(*_args: object, **_kwargs: object): + nonlocal lock_opened + lock_opened = True + raise AssertionError("unsafe bootstrap lock open") + + monkeypatch.setattr(storage_module, "process_file_lock", must_not_open_lock) + try: + with pytest.raises(ValidationError, match="reparse"): + storage_module._safe_mkdir(hot, hot / "capture") + assert not lock_opened + assert sentinel.read_bytes() == b"outside-must-not-be-opened" + assert not (hot / "capture").exists() + finally: + lock.rmdir() + + def test_epoch_journal_helpers_and_reconcile_shapes_fail_closed( tmp_path: Path, monkeypatch: pytest.MonkeyPatch ) -> None: @@ -462,7 +571,10 @@ def fail_after_open(root: Path, path: Path, *, allow_missing: bool) -> Path: (base / "stream=not-a-directory").write_text("x", encoding="utf-8") with pytest.raises(ValidationError, match="stream journal is not a directory"): NormalizedEpochJournal.reconcile_pending( - hot, storage_guard=guard, policy=epoch_fixtures.POLICY + hot, + expected_streams={}, + storage_guard=guard, + policy=epoch_fixtures.POLICY, ) other_root = tmp_path / "epoch-shape" @@ -474,6 +586,7 @@ def fail_after_open(root: Path, path: Path, *, allow_missing: bool) -> Path: with pytest.raises(ValidationError, match="epoch journal is not a directory"): NormalizedEpochJournal.reconcile_pending( other_hot, + expected_streams={"stream": ("binance", "BINANCE")}, storage_guard=other_guard, policy=epoch_fixtures.POLICY, ) @@ -1300,9 +1413,220 @@ def _rewrite_failure(journal: NormalizedEpochJournal, **changes: object) -> None _rewrite_content_addressed(path, "failure_sha256", **changes) +@pytest.mark.parametrize( + ("value", "message"), + ( + ({}, "Raw lineage is malformed"), + ([{"source": "binance"}], "Raw lineage is malformed"), + ), +) +def test_epoch_raw_lineage_rejects_non_list_and_malformed_entries( + tmp_path: Path, value: object, message: str +) -> None: + journal = _failed_epoch_for_recovery(tmp_path, "malformed-raw-lineage") + with pytest.raises(ValidationError, match=message): + epoch_module._validate_raw_references( + journal.hot_root, + value, + description="test terminal", + ) + + +def test_epoch_raw_lineage_rejects_duplicates_and_untrusted_objects(tmp_path: Path) -> None: + journal = _failed_epoch_for_recovery(tmp_path, "duplicate-raw-lineage") + prepared = json.loads( + next(journal.root.glob("transaction-prepared-*.json")).read_text(encoding="utf-8") + ) + reference = prepared["raw_references"][0] + with pytest.raises(ValidationError, match="contains duplicates"): + epoch_module._validate_raw_references( + journal.hot_root, + [reference, reference], + description="test terminal", + ) + + unavailable = {**reference, "object_id": "sha256-" + "0" * 64} + with pytest.raises(ValidationError): + epoch_module._validate_raw_references( + journal.hot_root, + [unavailable], + description="test terminal", + ) + + +def test_epoch_binding_rejects_noncanonical_time_and_missing_raw_lineage( + tmp_path: Path, +) -> None: + journal = _failed_epoch_for_recovery(tmp_path, "binding-negative-paths") + prepared = json.loads( + next(journal.root.glob("transaction-prepared-*.json")).read_text(encoding="utf-8") + ) + failure = json.loads( + next(journal.root.glob("finalize-failure-*.json")).read_text(encoding="utf-8") + ) + parts = epoch_module._load_epoch_parts(journal.hot_root, journal.root) + + with pytest.raises(ValidationError, match="not canonical UTC"): + epoch_module._parse_created_at("2026-08-29T01:00:00+00:00", "test transaction") + with pytest.raises(ValidationError, match="require Raw segment lineage"): + epoch_module._validate_prepared_binding( + journal.hot_root, + {**prepared, "raw_references": []}, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + policy=journal.policy, + actual_parts=parts, + ) + with pytest.raises(ValidationError, match="require Raw segment lineage"): + epoch_module._validate_terminal_binding( + journal.hot_root, + {**failure, "raw_references": []}, + prepared=None, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + policy=journal.policy, + actual_parts=parts, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + description="test terminal", + ) + + +@pytest.mark.parametrize( + ("changes", "message"), + ( + ({"records": "bad"}, "row counts are malformed"), + ({"accepted_rows": -1}, "row counts changed"), + ({"normalized_snapshot_id": None}, "snapshot identity is missing"), + ({"normalized_snapshot_id": 123}, "snapshot identity is malformed"), + ({"provider": "okx"}, "snapshot identity changed"), + ), +) +def test_epoch_snapshot_binding_rejects_malformed_and_mismatched_state( + tmp_path: Path, changes: dict[str, object], message: str +) -> None: + journal = _journal_with_lineage(tmp_path, "snapshot-binding") + journal.finalize(created_at=epoch_fixtures.NOW) + receipt = json.loads( + next(journal.root.glob("receipt-sha256-*.json")).read_text(encoding="utf-8") + ) + references = epoch_module._validate_raw_references( + journal.hot_root, + receipt["raw_references"], + description="test receipt", + ) + with pytest.raises(ValidationError, match=message): + epoch_module._validate_snapshot_binding( + journal.hot_root, + {**receipt, **changes}, + references=references, + description="test receipt", + ) + + +def test_epoch_snapshot_binding_allows_zero_accepted_rows_without_snapshot( + tmp_path: Path, +) -> None: + journal = _journal_with_lineage(tmp_path, "zero-accepted") + journal.finalize(created_at=epoch_fixtures.NOW) + receipt = json.loads( + next(journal.root.glob("receipt-sha256-*.json")).read_text(encoding="utf-8") + ) + references = epoch_module._validate_raw_references( + journal.hot_root, + receipt["raw_references"], + description="test receipt", + ) + epoch_module._validate_snapshot_binding( + journal.hot_root, + { + **receipt, + "records": 0, + "accepted_rows": 0, + "quarantined_rows": 0, + "normalized_snapshot_id": None, + }, + references=references, + description="test receipt", + ) + + +def test_epoch_recovery_rejects_duplicate_prepared_transactions(tmp_path: Path) -> None: + journal = _failed_epoch_for_recovery(tmp_path, "duplicate-prepared") + prepared = next(journal.root.glob("transaction-prepared-*.json")) + duplicate = prepared.with_name(prepared.name.replace("prepared-0001-", "prepared-9999-")) + duplicate.write_bytes(prepared.read_bytes()) + + with pytest.raises(ValidationError, match="duplicate PREPARED"): + NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + with pytest.raises(ValidationError, match="duplicate PREPARED"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + expected_streams=_identity_anchor(journal), + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +def test_epoch_reconcile_rejects_missing_anchor_open_part_and_orphan_journal( + tmp_path: Path, +) -> None: + missing_anchor = _failed_epoch_for_recovery(tmp_path / "anchor", "missing-anchor") + with pytest.raises(ValidationError, match="independent identity anchor"): + NormalizedEpochJournal.reconcile_pending( + missing_anchor.hot_root, + expected_streams={}, + storage_guard=missing_anchor.storage_guard, + policy=missing_anchor.policy, + ) + + opened = _failed_epoch_for_recovery(tmp_path / "open", "open-part") + opened._open_path.write_bytes(b'{"partial":true}\n') + with pytest.raises(ValidationError, match="unsealed open part"): + NormalizedEpochJournal.reconcile_pending( + opened.hot_root, + expected_streams=_identity_anchor(opened), + storage_guard=opened.storage_guard, + policy=opened.policy, + ) + + root = tmp_path / "orphan" + root.mkdir() + hot, _archive, guard = epoch_fixtures.storage(root) + orphan = NormalizedEpochJournal( + hot, + epoch_id="orphan", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + orphan._open_stream.close() + with pytest.raises(ValidationError, match="no durable transaction state"): + NormalizedEpochJournal.reconcile_pending( + hot, + expected_streams=_identity_anchor(orphan), + storage_guard=guard, + policy=orphan.policy, + ) + + @pytest.mark.parametrize( ("case", "changes"), ( + ("schema", {"schema_version": "puresaber.normalized-epoch-transaction@9.9.9"}), ("state", {"transaction_state": "BROKEN"}), ("epoch", {"epoch_id": "different"}), ("stream", {"stream_id": "different"}), @@ -1310,6 +1634,7 @@ def _rewrite_failure(journal: NormalizedEpochJournal, **changes: object) -> None ("venue", {"venue": "OKX"}), ("policy", {"policy": {}}), ("attempt", {"attempt": 0}), + ("attempt-type", {"attempt": "1"}), ), ) def test_epoch_recovery_rejects_each_prepared_identity_field( @@ -1331,28 +1656,44 @@ def test_epoch_recovery_rejects_each_prepared_identity_field( with pytest.raises(ValidationError, match="transaction identity"): NormalizedEpochJournal.reconcile_pending( journal.hot_root, + expected_streams=_identity_anchor(journal), storage_guard=journal.storage_guard, policy=journal.policy, ) @pytest.mark.parametrize( - ("case", "changes"), + ("case", "changes", "message"), ( - ("state", {"transaction_state": "BROKEN"}), - ("epoch", {"epoch_id": "different"}), - ("stream", {"stream_id": "different"}), - ("prepared", {"prepared_sha256": "0" * 64}), + ( + "schema", + {"schema_version": "puresaber.normalized-epoch-receipt@9.9.9"}, + "receipt identity", + ), + ("state", {"transaction_state": "BROKEN"}, "receipt identity"), + ("epoch", {"epoch_id": "different"}, "receipt identity"), + ("stream", {"stream_id": "different"}, "receipt identity"), + ("prepared", {"prepared_sha256": "0" * 64}, "receipt identity"), + ("provider", {"provider": "okx"}, "receipt identity"), + ("venue", {"venue": "OKX"}, "receipt identity"), + ("policy", {"policy": {}}, "receipt identity"), + ("records", {"records": 999}, "record count changed"), + ("raw-lineage", {"raw_references": []}, "Raw lineage changed"), + ("journal-parts", {"journal_parts": []}, "part manifest changed"), + ("raw-count", {"raw_segments": 0}, "Raw count changed"), + ("raw-count-type", {"raw_segments": True}, "Raw count changed"), + ("row-counts", {"accepted_rows": 0}, "row counts changed"), + ("snapshot", {"normalized_snapshot_id": None}, "snapshot identity is missing"), ), ) def test_epoch_recovery_rejects_each_committed_identity_field( - tmp_path: Path, case: str, changes: dict[str, object] + tmp_path: Path, case: str, changes: dict[str, object], message: str ) -> None: journal = _journal_with_lineage(tmp_path / case, f"receipt-{case}") journal.finalize(created_at=epoch_fixtures.NOW) receipt = next(journal.root.glob("receipt-sha256-*.json")) _rewrite_content_addressed(receipt, "receipt_sha256", **changes) - with pytest.raises(ValidationError, match="COMMITTED receipt identity"): + with pytest.raises(ValidationError, match=message): NormalizedEpochJournal.recover( journal.hot_root, epoch_id=journal.epoch_id, @@ -1362,25 +1703,38 @@ def test_epoch_recovery_rejects_each_committed_identity_field( storage_guard=journal.storage_guard, policy=journal.policy, ) - with pytest.raises(ValidationError, match="COMMITTED receipt identity"): + with pytest.raises(ValidationError, match=message): NormalizedEpochJournal.reconcile_pending( journal.hot_root, + expected_streams=_identity_anchor(journal), storage_guard=journal.storage_guard, policy=journal.policy, ) @pytest.mark.parametrize( - ("case", "changes"), + ("case", "changes", "message"), ( - ("state", {"transaction_state": "BROKEN"}), - ("epoch", {"epoch_id": "different"}), - ("stream", {"stream_id": "different"}), - ("prepared", {"prepared_sha256": "0" * 64}), + ( + "schema", + {"schema_version": "puresaber.normalized-epoch-abort@9.9.9"}, + "ABORTED transaction identity", + ), + ("state", {"transaction_state": "BROKEN"}, "ABORTED identity"), + ("epoch", {"epoch_id": "different"}, "ABORTED identity"), + ("stream", {"stream_id": "different"}, "ABORTED identity"), + ("prepared", {"prepared_sha256": "0" * 64}, "ABORTED identity"), + ("provider", {"provider": "okx"}, "ABORTED transaction identity"), + ("venue", {"venue": "OKX"}, "ABORTED transaction identity"), + ("policy", {"policy": {}}, "ABORTED transaction identity"), + ("records", {"records": 1}, "record count changed"), + ("journal-parts", {"journal_parts": [{}]}, "part manifest changed"), + ("created-at", {"created_at": "not-a-time"}, "created_at is malformed"), + ("retryable", {"retryable": True}, "ABORTED identity"), ), ) def test_epoch_recovery_rejects_each_explicit_abort_identity_field( - tmp_path: Path, case: str, changes: dict[str, object] + tmp_path: Path, case: str, changes: dict[str, object], message: str ) -> None: root = tmp_path / case root.mkdir() @@ -1396,7 +1750,7 @@ def test_epoch_recovery_rejects_each_explicit_abort_identity_field( ) abort = journal.abort_visible("operator") _rewrite_content_addressed(abort, "abort_sha256", **changes) - with pytest.raises(ValidationError, match="explicit ABORTED identity"): + with pytest.raises(ValidationError, match=message): NormalizedEpochJournal.recover( hot, epoch_id=journal.epoch_id, @@ -1406,14 +1760,54 @@ def test_epoch_recovery_rejects_each_explicit_abort_identity_field( storage_guard=guard, policy=journal.policy, ) - with pytest.raises(ValidationError, match="explicit ABORTED identity"): + with pytest.raises(ValidationError, match=message): NormalizedEpochJournal.reconcile_pending( hot, + expected_streams=_identity_anchor(journal), storage_guard=guard, policy=journal.policy, ) +@pytest.mark.parametrize( + ("case", "changes", "message"), + ( + ( + "schema", + {"schema_version": "puresaber.normalized-epoch-finalize-failure@9.9.9"}, + "failure record identity changed", + ), + ("attempt", {"attempt": 0}, "not recoverable"), + ("attempt-type", {"attempt": "1"}, "not recoverable"), + ("retryable-type", {"retryable_in_process": 1}, "not recoverable"), + ("record-type", {"records": True}, "record count changed"), + ("snapshot-state", {"accepted_rows": 0}, "snapshot state changed"), + ), +) +def test_epoch_recovery_rejects_each_failure_schema_and_type_field( + tmp_path: Path, case: str, changes: dict[str, object], message: str +) -> None: + journal = _failed_epoch_for_recovery(tmp_path / case, f"failure-{case}") + _rewrite_failure(journal, **changes) + with pytest.raises(ValidationError, match=message): + NormalizedEpochJournal.recover( + journal.hot_root, + epoch_id=journal.epoch_id, + stream_id=journal.stream_id, + provider=journal.provider, + venue=journal.venue, + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + with pytest.raises(ValidationError, match=message): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + expected_streams=_identity_anchor(journal), + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + def test_epoch_recovery_rejects_failure_lineage_reference_and_filename( tmp_path: Path, ) -> None: @@ -1484,25 +1878,23 @@ def test_epoch_legacy_failure_and_pending_manifest_negative_paths(tmp_path: Path _rewrite_failure(legacy, prepared_sha256=None) for path in legacy.root.glob("transaction-prepared-*.json"): path.unlink() - recovered = NormalizedEpochJournal.recover( - legacy.hot_root, - epoch_id=legacy.epoch_id, - stream_id=legacy.stream_id, - provider=legacy.provider, - venue=legacy.venue, - storage_guard=legacy.storage_guard, - policy=legacy.policy, - ) - assert recovered.records == legacy.records - recovered.abort_visible("legacy verified") - assert ( + with pytest.raises(ValidationError, match="no durable PREPARED"): + NormalizedEpochJournal.recover( + legacy.hot_root, + epoch_id=legacy.epoch_id, + stream_id=legacy.stream_id, + provider=legacy.provider, + venue=legacy.venue, + storage_guard=legacy.storage_guard, + policy=legacy.policy, + ) + with pytest.raises(ValidationError, match="no durable PREPARED"): NormalizedEpochJournal.reconcile_pending( legacy.hot_root, + expected_streams=_identity_anchor(legacy), storage_guard=legacy.storage_guard, policy=legacy.policy, ) - == () - ) records = _journal_with_lineage(tmp_path / "records", "records") monkey = records._write_committed_receipt @@ -1643,6 +2035,7 @@ def corrupt_receipt(path: Path, body: bytes, *, root: Path | None = None) -> Non with pytest.raises(ValidationError, match="receipt hash changed"): NormalizedEpochJournal.reconcile_pending( journal.hot_root, + expected_streams=_identity_anchor(journal), storage_guard=journal.storage_guard, policy=journal.policy, ) diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index 6a8e75a..7806b6e 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -37,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == version("quant-data-kit") == "0.7.2" + assert qdk.__version__ == version("quant-data-kit") == "0.7.3" for name in ( "write_raw_bytes", "write_normalized_events", From 1eb30f7b61c5563ee2350a2f4daa9fff7cb6c092 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 20:58:38 +0800 Subject: [PATCH 14/16] test: certify epoch recovery hardening --- .../m7-capture-remediation-v4/.gitattributes | 1 + ...14cc68e98e7603307b6af52be7967568cabb5e.txt | 18 + ...4c19524d591f321f23e909661b9ad3174996b.json | 1 + ...f5c897a99a663f0e4f3c769f521e617c945eb.json | 1 + ...908f61b1ad7a25f3e5311241aba29bd9ce04f.json | 48 ++ ...668bb7d6bd34b51fa5af70a070696bca599a3.json | 703 ++++++++++++++++++ ...7417e40dd873595c25e5912f9fb879e2c3062.json | 1 + ...75835b55473df8c168a679dfa813133875e76.json | 1 + ...ccfae7151a0b86819c820c3e736e2fb642570.json | 1 + ...502cb1d8708c97cd5dde54a096a3ab080400b.json | 1 + ...34a7eebf0462595c459b83023027645d57cccf.txt | 1 + ...8e26cbda1126b4e638c5a9d46ae1d8ee980816.xml | 1 + ...1e478660fe3c4e2f7eb51f0083406f8646f51b.xml | 1 + ...515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt | 1 + ...d1906fdb6fec6b28dad3734a3656bcdfecd14e.txt | 1 + ...cabf10d1a6a366a4ce0960da3832655f03746.json | 1 + ...b3b54612c940f041d99bd7aeb00dd2a43ad5d.json | 1 + ...9b14ad0994cf0411ba9c91b27e6e9220c2042.json | 1 + .../evidence-manifest.json | 127 ++++ .../m7-capture-remediation-v4/summary.md | 115 +++ .../technical-handoff.md | 68 ++ 21 files changed, 1094 insertions(+) create mode 100644 validation/m7-capture-remediation-v4/.gitattributes create mode 100644 validation/m7-capture-remediation-v4/artifacts/branch-gates-sha256-996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e.txt create mode 100644 validation/m7-capture-remediation-v4/artifacts/capacity-preflight-refusal-sha256-9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/capacity-run-refusal-sha256-e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/cli-invocation-results-sha256-6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/data-10m-3run-sha256-e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/dense-round-01-sha256-4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/dense-round-02-sha256-12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/dense-round-03-sha256-d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/full-coverage-sha256-0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/pip-check-sha256-672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf.txt create mode 100644 validation/m7-capture-remediation-v4/artifacts/pytest-hardexit-junit-sha256-ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816.xml create mode 100644 validation/m7-capture-remediation-v4/artifacts/pytest-main-junit-sha256-b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b.xml create mode 100644 validation/m7-capture-remediation-v4/artifacts/ruff-check-sha256-a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt create mode 100644 validation/m7-capture-remediation-v4/artifacts/ruff-format-sha256-396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e.txt create mode 100644 validation/m7-capture-remediation-v4/artifacts/sparse-round-01-sha256-35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/sparse-round-02-sha256-c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d.json create mode 100644 validation/m7-capture-remediation-v4/artifacts/sparse-round-03-sha256-eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042.json create mode 100644 validation/m7-capture-remediation-v4/evidence-manifest.json create mode 100644 validation/m7-capture-remediation-v4/summary.md create mode 100644 validation/m7-capture-remediation-v4/technical-handoff.md diff --git a/validation/m7-capture-remediation-v4/.gitattributes b/validation/m7-capture-remediation-v4/.gitattributes new file mode 100644 index 0000000..b3af488 --- /dev/null +++ b/validation/m7-capture-remediation-v4/.gitattributes @@ -0,0 +1 @@ +artifacts/* binary diff --git a/validation/m7-capture-remediation-v4/artifacts/branch-gates-sha256-996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e.txt b/validation/m7-capture-remediation-v4/artifacts/branch-gates-sha256-996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e.txt new file mode 100644 index 0000000..da1889a --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/branch-gates-sha256-996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e.txt @@ -0,0 +1,18 @@ +src/quant_data_kit/normalized_v3.py: 498/548=90.88% (required>=90%) +src/quant_data_kit/data_lake.py: 336/372=90.32% (required>=90%) +src/quant_data_kit/curated.py: 94/100=94.00% (required>=90%) +src/quant_data_kit/process_lock.py: 8/8=100.00% (required>=90%) +src/quant_data_kit/schemas_v2.py: 103/108=95.37% (required>=90%) +src/quant_data_kit/l2_replay.py: 103/106=97.17% (required>=90%) +src/quant_data_kit/adapters_v2/base.py: 30/32=93.75% (required>=90%) +src/quant_data_kit/adapters_v2/binance.py: 21/22=95.45% (required>=90%) +src/quant_data_kit/adapters_v2/okx.py: 48/52=92.31% (required>=90%) +src/quant_data_kit/adapters_v2/cn_neutral.py: 10/10=100.00% (required>=90%) +src/quant_data_kit/capture_v2/models.py: 83/90=92.22% (required>=90%) +src/quant_data_kit/capture_v2/storage.py: 125/136=91.91% (required>=90%) +src/quant_data_kit/capture_v2/synchronizers.py: 90/90=100.00% (required>=90%) +src/quant_data_kit/capture_v2/epoch.py: 207/224=92.41% (required>=90%) +src/quant_data_kit/capture_v2/transport.py: 12/12=100.00% (required>=90%) +src/quant_data_kit/capture_v2/collector.py: 85/94=90.43% (required>=90%) +src/quant_data_kit/capture_v2/cli.py: 37/38=97.37% (required>=90%) +ALL src/quant_data_kit: 2171/2494=87.05% (required>=80%) diff --git a/validation/m7-capture-remediation-v4/artifacts/capacity-preflight-refusal-sha256-9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b.json b/validation/m7-capture-remediation-v4/artifacts/capacity-preflight-refusal-sha256-9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b.json new file mode 100644 index 0000000..fe9d9ea --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/capacity-preflight-refusal-sha256-9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","continuous_days":0,"ended_at":"2026-08-30T12:52:41.268500Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"4e3f17d9d5743b39bf67104cac64a1931398a9471d03b9a6ea6cd9a92955e0e3","run_id":"capture-5708cac137c949408a9c3a6bca9649e1","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T12:52:41.265451Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684167680, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/capacity-run-refusal-sha256-e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb.json b/validation/m7-capture-remediation-v4/artifacts/capacity-run-refusal-sha256-e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb.json new file mode 100644 index 0000000..16e0deb --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/capacity-run-refusal-sha256-e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","continuous_days":0,"ended_at":"2026-08-30T12:52:50.491798Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"bc2a2abc94ba9bbf7123ec6bafd9d1e1e91f92ffdd5c3561778df59dce4bda6c","run_id":"capture-9f26e703a03b44c4ad716cfea4d1682e","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T12:52:50.488799Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=59684151296, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/cli-invocation-results-sha256-6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f.json b/validation/m7-capture-remediation-v4/artifacts/cli-invocation-results-sha256-6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f.json new file mode 100644 index 0000000..66ee692 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/cli-invocation-results-sha256-6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f.json @@ -0,0 +1,48 @@ +{ + "schema_version": "puresaber.m7-cli-invocation-evidence@1.0.0", + "source_commit": "dfb53b02d1bf01ff592b4948475ebdc8e6dd301c", + "working_directory": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7", + "executable": ".\\.venv-m7-verify\\Scripts\\qdk-capture.exe", + "config": { + "path": "H:\\Documents\\ChatGPT\\temp\\m7-dfb53b0-capacity\\capture-config.json", + "sha256": "4f7d4ac7987ee1818b342c0dbbbecbe60cff85b4b1f4dd3639fb463760a0b764", + "collector_commit": "dfb53b02d1bf01ff592b4948475ebdc8e6dd301c" + }, + "invocations": [ + { + "mode": "preflight", + "argv": [ + ".\\.venv-m7-verify\\Scripts\\qdk-capture.exe", + "H:\\Documents\\ChatGPT\\temp\\m7-dfb53b0-capacity\\capture-config.json", + "--mode", + "preflight" + ], + "exit_code": 2, + "run_id": "capture-5708cac137c949408a9c3a6bca9649e1", + "status": "PAUSED_PREFLIGHT_FAILED", + "report_file_sha256": "9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b", + "embedded_report_sha256": "4e3f17d9d5743b39bf67104cac64a1931398a9471d03b9a6ea6cd9a92955e0e3", + "websocket_messages": 0, + "long_running_capture_started": false + }, + { + "mode": "run", + "argv": [ + ".\\.venv-m7-verify\\Scripts\\qdk-capture.exe", + "H:\\Documents\\ChatGPT\\temp\\m7-dfb53b0-capacity\\capture-config.json", + "--mode", + "run", + "--confirm-long-running" + ], + "exit_code": 2, + "run_id": "capture-9f26e703a03b44c4ad716cfea4d1682e", + "status": "PAUSED_PREFLIGHT_FAILED", + "report_file_sha256": "e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb", + "embedded_report_sha256": "bc2a2abc94ba9bbf7123ec6bafd9d1e1e91f92ffdd5c3561778df59dce4bda6c", + "websocket_messages": 0, + "long_running_capture_started": false + } + ], + "network_connections_started": 0, + "orders_sent": 0 +} diff --git a/validation/m7-capture-remediation-v4/artifacts/data-10m-3run-sha256-e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3.json b/validation/m7-capture-remediation-v4/artifacts/data-10m-3run-sha256-e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3.json new file mode 100644 index 0000000..2a3bcc8 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/data-10m-3run-sha256-e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "dfb53b02d1bf01ff592b4948475ebdc8e6dd301c", + "dirty": false + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.7.3", + "temp_environment": { + "TEMP": "F:\\puresaber-m7-temp-dfb53b0", + "TMP": "F:\\puresaber-m7-temp-dfb53b0", + "tempfile_gettempdir": "F:\\puresaber-m7-temp-dfb53b0" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 9091108864, + "total_bytes": 321320923136, + "used_bytes": 312229814272 + }, + "F:\\": { + "free_bytes": 303526764544, + "total_bytes": 594535321600, + "used_bytes": 291008557056 + }, + "H:\\": { + "free_bytes": 220745609216, + "total_bytes": 998553677824, + "used_bytes": 777808068608 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 9092079616, + "total_bytes": 321320923136, + "used_bytes": 312228843520 + }, + "F:\\": { + "free_bytes": 303526764544, + "total_bytes": 594535321600, + "used_bytes": 291008557056 + }, + "H:\\": { + "free_bytes": 224056848384, + "total_bytes": 998553677824, + "used_bytes": 774496829440 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\m7-dfb53b0-10m\\retained-data" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.010462300000654, + "events_per_second": 188642.00699490742, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3352682496, + "peak_rss_gib": 3.1224288940429688, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.499994247453287e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.489999941550195e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.164676299998973 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.18545769999764 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.073015400001168 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3873180000009597 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.0599999414989725e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4585753999999724 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.5021808000019519 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6435899999996764 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.019399700002396 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.09497259999989, + "events_per_second": 188341.74895119958, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3336343552, + "peak_rss_gib": 3.1072120666503906, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.900000931229442e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.289999873843044e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.006779399998777 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.532636700001603 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0989669000009599 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3260793999979796 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.370000119204633e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4484437000028265 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4537172000018472 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6802170000009937 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.4038006999981 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 52.58502859999862, + "events_per_second": 190168.1955156389, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3330072576, + "peak_rss_gib": 3.1013717651367188, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.599998646881431e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.330000178422779e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 13.967041700001573 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.088539199998195 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0714885000015784 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.359349899998051 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 0.00010099999781232327 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4479047999993782 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4674919999997655 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6702760999978636 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 26.95934169999964 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 3.1224288940429688, + "median_events_per_second": 188642.00699490742, + "minimum_events_per_second": 188341.74895119958, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/m7-capture-remediation-v4/artifacts/dense-round-01-sha256-4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062.json b/validation/m7-capture-remediation-v4/artifacts/dense-round-01-sha256-4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062.json new file mode 100644 index 0000000..732bf25 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/dense-round-01-sha256-4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.8287927303849596,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.82879273038496},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:46:09.321908Z","report_sha256":"b064fe958c58ffe4f5688e9d1009a43719304b85d059f2558b7b71e5d0a95a71","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":26.117893299997377,"event_loop_delay_p95_milliseconds":24.3588000012096,"event_loop_delay_p99_milliseconds":37.703999998484505,"event_loop_delay_samples":1178,"last_epoch_submit_seconds":16.187119399997755,"normalization_group_window_seconds":9.930185400000482,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12240.19090391307,"throughput_websocket_messages_per_second":306.3034184307968,"total_wall_seconds":26.19501219999802,"worker_teardown_seconds":0.07711890000064159,"workload_elapsed_seconds":26.117893299997377},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/dense-round-02-sha256-12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76.json b/validation/m7-capture-remediation-v4/artifacts/dense-round-02-sha256-12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76.json new file mode 100644 index 0000000..34b40da --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/dense-round-02-sha256-12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.8611657467133833,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.8611657467133833},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:46:42.061386Z","report_sha256":"c255f10933912875373d691c1a7c25220dbc5955bb8c1a1f4d092252d3e6d470","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":25.898914100002003,"event_loop_delay_p95_milliseconds":22.949599999265047,"event_loop_delay_p99_milliseconds":37.612099997204496,"event_loop_delay_samples":1186,"last_epoch_submit_seconds":15.848975900000369,"normalization_group_window_seconds":10.037691800000175,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12343.68355235308,"throughput_websocket_messages_per_second":308.89325973707065,"total_wall_seconds":25.972198700001172,"worker_teardown_seconds":0.07328459999916959,"workload_elapsed_seconds":25.898914100002003},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/dense-round-03-sha256-d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570.json b/validation/m7-capture-remediation-v4/artifacts/dense-round-03-sha256-d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570.json new file mode 100644 index 0000000..6346780 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/dense-round-03-sha256-d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.8848791885321816,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.8848791885321816},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:47:16.737536Z","report_sha256":"63ec9f5622c87e5ad54989284e364a63fc5a524c2ddfdf54039e360ae4447022","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":25.740826199998992,"event_loop_delay_p95_milliseconds":23.884599999291822,"event_loop_delay_p99_milliseconds":37.07469999790192,"event_loop_delay_samples":1173,"last_epoch_submit_seconds":15.8980475999997,"normalization_group_window_seconds":9.846192300003167,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12419.49258023476,"throughput_websocket_messages_per_second":310.79033508257453,"total_wall_seconds":25.81754910000018,"worker_teardown_seconds":0.07672290000118664,"workload_elapsed_seconds":25.740826199998992},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/full-coverage-sha256-0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b.json b/validation/m7-capture-remediation-v4/artifacts/full-coverage-sha256-0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b.json new file mode 100644 index 0000000..2add1a8 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/full-coverage-sha256-0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.16.0", "timestamp": "2026-08-30T20:45:12.504868", "branch_coverage": true, "show_contexts": false}, "files": {"src\\quant_data_kit\\__init__.py": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\_version.py": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\__init__.py": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\base.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 41, 42, 43, 44, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 142, 143, 144, 145, 146, 151, 153, 154, 156, 169, 170, 171, 172, 173, 177, 178, 179, 181, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 216, 217, 218, 219], "summary": {"covered_lines": 124, "num_statements": 126, "percent_covered": 97.46835443037975, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 6, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 2, "covered_branches": 30, "missing_branches": 2, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [45, 193], "excluded_lines": [50, 51, 52, 53, 54, 55], "executed_branches": [[43, 44], [57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99], [133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[43, 45], [192, 193]], "functions": {"AdapterContext.instrument": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "AdapterContext.session_id": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter.transaction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51], "start_line": 51, "executed_branches": [], "missing_branches": []}, "ProviderAdapter.adapt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [53], "start_line": 53, "executed_branches": [], "missing_branches": []}, "utc_from_milliseconds": {"executed_lines": [57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "utc_from_text": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73]], "missing_branches": []}, "fixed": {"executed_lines": [77, 78, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "event_identity": {"executed_lines": [95, 96, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [[95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}, "BookSequenceNormalizer.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.transaction": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.snapshot": {"executed_lines": [132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[133, 134], [133, 135]], "missing_branches": []}, "BookSequenceNormalizer.heartbeat": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [[142, 143], [142, 144], [145, -140], [145, 146]], "missing_branches": []}, "BookSequenceNormalizer.reset": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.advance_without_levels": {"executed_lines": [169, 170, 171, 172, 173, 177, 178, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179]], "missing_branches": []}, "BookSequenceNormalizer.delta": {"executed_lines": [189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [193], "excluded_lines": [], "start_line": 181, "executed_branches": [[189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "adapt_fixture_messages": {"executed_lines": [216, 217, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 66, 76, 84, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AdapterInstrument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "AdapterContext": {"executed_lines": [34, 35, 36, 37, 42, 43, 44], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 27, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51, 53], "start_line": 48, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer": {"executed_lines": [116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 146, 153, 154, 169, 170, 171, 172, 173, 177, 178, 179, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [193], "excluded_lines": [], "start_line": 112, "executed_branches": [[133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212, 216, 217, 218, 219], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [[57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\binance.py": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 69, "num_statements": 70, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]], "functions": {"BinanceFixtureAdapter.__init__": {"executed_lines": [40, 41, 42, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, 41], [40, 42]], "missing_branches": []}, "BinanceFixtureAdapter._event_id": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.transaction": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.adapt": {"executed_lines": [56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 55, "executed_branches": [[63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BinanceFixtureAdapter": {"executed_lines": [40, 41, 42, 43, 44, 47, 48, 52, 53, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32, "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\cn_neutral.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 109, 110, 111], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": [], "functions": {"CNNeutralFixtureAdapter.__init__": {"executed_lines": [32, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [[32, 33], [32, 34]], "missing_branches": []}, "CNNeutralFixtureAdapter.transaction": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CNNeutralFixtureAdapter.adapt": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "CNNeutralFixtureAdapter._level": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CNNeutralFixtureAdapter": {"executed_lines": [32, 33, 34, 35, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 111], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\okx.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 86, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 293, 294, 295, 296], "summary": {"covered_lines": 146, "num_statements": 152, "percent_covered": 95.09803921568627, "percent_covered_display": "95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.05263157894737, "percent_statements_covered_display": "96", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]], "functions": {"OKXFixtureAdapter.__init__": {"executed_lines": [44, 45, 46, 47, 48, 49], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 46]], "missing_branches": []}, "OKXFixtureAdapter.transaction": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[62, 63], [62, 66]], "missing_branches": []}, "OKXFixtureAdapter._book_transaction": {"executed_lines": [70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [[76, 77], [76, 79], [80, 81], [80, 83]], "missing_branches": []}, "OKXFixtureAdapter._require_fresh_snapshot": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._signed_crc32": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._checksum": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 106], [102, 103], [104, 101], [104, 105]], "missing_branches": [[102, 104]]}, "OKXFixtureAdapter._apply_book_message": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [123, 127, 132, 133], "excluded_lines": [], "start_line": 109, "executed_branches": [[116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135]], "missing_branches": [[122, 123], [126, 127]]}, "OKXFixtureAdapter.adapt": {"executed_lines": [138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.34146341463415, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [229, 234], "excluded_lines": [], "start_line": 137, "executed_branches": [[145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[228, 229]]}, "OKXFixtureAdapter._book_level": {"executed_lines": [295, 296], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"OKXFixtureAdapter": {"executed_lines": [44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 87, 88, 89, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 295, 296], "summary": {"covered_lines": 118, "num_statements": 124, "percent_covered": 94.31818181818181, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.16129032258064, "percent_statements_covered_display": "95", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "start_line": 35, "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\calendar.py": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]], "functions": {"trading_days_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": [[14, 15], [14, 16]]}, "load_sse_trade_dates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [22, 24, 25, 26, 27], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "is_trading_day": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [31, 32, 33, 34], "excluded_lines": [], "start_line": 30, "executed_branches": [], "missing_branches": [[32, 33], [32, 34]]}, "": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]]}}}, "src\\quant_data_kit\\capture_v2\\__init__.py": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]], "functions": {"_reject_credentials": {"executed_lines": [53, 54, 55, 56, 57, 60, 61, 62, 63], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63]], "missing_branches": []}, "load_capture_config": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89]], "missing_branches": []}, "_streams": {"executed_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [[106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117]], "missing_branches": []}, "_parser": {"executed_lines": [128, 132, 133, 139, 145, 150], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "main_capture": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 153, "executed_branches": [[158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 66, 105, 127, 153, 186], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [187], "excluded_lines": [], "start_line": 1, "executed_branches": [[186, -1]], "missing_branches": [[186, 187]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]]}}}, "src\\quant_data_kit\\capture_v2\\collector.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 335, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 365, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 393, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 438, 445, 446, 447, 448, 449, 450, 451, 467, 468, 469, 470, 471, 472, 473, 474, 475, 481, 482, 483, 484, 485, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 557, 558, 559, 560, 563, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 615, 618, 634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 663, 664, 666, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 690, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832, 841, 842, 845, 858, 859, 862, 892, 902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 465, "num_statements": 485, "percent_covered": 94.99136442141624, "percent_covered_display": "95", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 95.87628865979381, "percent_statements_covered_display": "96", "num_branches": 94, "num_partial_branches": 9, "covered_branches": 85, "missing_branches": 9, "percent_branches_covered": 90.42553191489361, "percent_branches_covered_display": "90"}, "missing_lines": [146, 147, 231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555, 673, 756, 757, 768, 792, 831], "excluded_lines": [], "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144], [229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569], [734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555], [812, 811], [830, 831]], "functions": {"_json_object": {"executed_lines": [117, 118, 119, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125]], "missing_branches": []}, "_frame_metadata": {"executed_lines": [129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 128, "executed_branches": [[130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}, "CaptureStreamRunner.__init__": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner.run": {"executed_lines": [227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303], "summary": {"covered_lines": 61, "num_statements": 67, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.04477611940298, "percent_statements_covered_display": "91", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "79"}, "missing_lines": [231, 232, 238, 296, 297, 301], "excluded_lines": [], "start_line": 226, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292]], "missing_branches": [[230, 231], [234, 238], [291, 301]]}, "CaptureStreamRunner._handle_cancellation": {"executed_lines": [306, 307, 308, 309, 310, 311], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 305, "executed_branches": [[308, 309]], "missing_branches": [[308, 310]]}, "CaptureStreamRunner._run_connection": {"executed_lines": [314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313, "executed_branches": [[328, 329], [328, 331]], "missing_branches": []}, "CaptureStreamRunner._run_binance": {"executed_lines": [340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[354, 355], [354, 356], [358, -335], [358, 362]], "missing_branches": []}, "CaptureStreamRunner._run_okx": {"executed_lines": [370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [[381, 382], [381, 384], [386, -365], [386, 390]], "missing_branches": []}, "CaptureStreamRunner._receive_frame": {"executed_lines": [394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393, "executed_branches": [[394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436]], "missing_branches": []}, "CaptureStreamRunner._https_frame": {"executed_lines": [445, 446, 447, 448, 449, 450, 451], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._apply_outcome": {"executed_lines": [468, 469, 470, 471, 472, 473, 474, 475], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475]], "missing_branches": []}, "CaptureStreamRunner._new_epoch": {"executed_lines": [482, 483, 484, 485], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481, "executed_branches": [[482, 483], [482, 484]], "missing_branches": []}, "CaptureStreamRunner._drain_segments": {"executed_lines": [501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 500, "executed_branches": [[501, -500], [501, 502], [503, 504], [503, 505], [505, 506]], "missing_branches": [[505, 507]]}, "CaptureStreamRunner._finalize_epoch": {"executed_lines": [511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 510, "executed_branches": [[511, 512], [511, 513], [514, 515], [514, 519]], "missing_branches": []}, "CaptureStreamRunner._terminal_cleanup": {"executed_lines": [524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 523, "executed_branches": [[536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523]], "missing_branches": [[547, 548], [554, 555]]}, "CaptureStreamRunner._pause": {"executed_lines": [558, 559, 560, 563, 564], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "CaptureStreamRunner._alert": {"executed_lines": [567, 568, 569], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[567, 568], [567, 569]], "missing_branches": []}, "CaptureStreamRunner._report": {"executed_lines": [572, 573, 574, 575, 576], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.__init__": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight": {"executed_lines": [664], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight_only": {"executed_lines": [667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [673], "excluded_lines": [], "start_line": 666, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.run": {"executed_lines": [691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832], "summary": {"covered_lines": 58, "num_statements": 63, "percent_covered": 91.56626506024097, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.06349206349206, "percent_statements_covered_display": "92", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [756, 757, 768, 792, 831], "excluded_lines": [], "start_line": 690, "executed_branches": [[734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[812, 811], [830, 831]]}, "CryptoL2CaptureCoordinator._stream_succeeded": {"executed_lines": [845], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 842, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._empty_stream_report": {"executed_lines": [862], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 859, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._write_report": {"executed_lines": [902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 892, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 128, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 841, 842, 858, 859, 892], "summary": {"covered_lines": 97, "num_statements": 97, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CaptureStreamReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [], "missing_branches": []}, "CaptureRunReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 311, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 445, 446, 447, 448, 449, 450, 451, 468, 469, 470, 471, 472, 473, 474, 475, 482, 483, 484, 485, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 558, 559, 560, 563, 564, 567, 568, 569, 572, 573, 574, 575, 576], "summary": {"covered_lines": 243, "num_statements": 255, "percent_covered": 94.0809968847352, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 95.29411764705883, "percent_statements_covered_display": "95", "num_branches": 66, "num_partial_branches": 7, "covered_branches": 59, "missing_branches": 7, "percent_branches_covered": 89.39393939393939, "percent_branches_covered_display": "89"}, "missing_lines": [231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 151, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555]]}, "CryptoL2CaptureCoordinator": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 664, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832, 845, 862, 902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 103, "num_statements": 109, "percent_covered": 93.7984496124031, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.4954128440367, "percent_statements_covered_display": "94", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [673, 756, 757, 768, 792, 831], "excluded_lines": [], "start_line": 615, "executed_branches": [[734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[812, 811], [830, 831]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 841, 842, 858, 859, 892], "summary": {"covered_lines": 119, "num_statements": 121, "percent_covered": 98.44961240310077, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.34710743801652, "percent_statements_covered_display": "98", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\epoch.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 35, 36, 42, 43, 44, 45, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 91, 92, 93, 94, 97, 98, 107, 108, 109, 110, 113, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 153, 154, 155, 156, 159, 165, 166, 167, 168, 169, 170, 171, 186, 187, 188, 189, 190, 191, 194, 205, 206, 207, 219, 220, 221, 223, 224, 225, 226, 227, 232, 233, 234, 237, 251, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 278, 279, 280, 283, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 310, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 326, 329, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 397, 398, 399, 400, 401, 402, 407, 408, 409, 410, 411, 412, 413, 414, 415, 420, 421, 422, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 438, 439, 440, 442, 443, 444, 446, 447, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 486, 487, 497, 498, 499, 500, 509, 510, 511, 512, 518, 519, 532, 533, 538, 539, 545, 546, 555, 556, 557, 560, 567, 568, 584, 590, 599, 600, 601, 604, 605, 606, 615, 616, 629, 630, 639, 640, 641, 644, 646, 647, 648, 651, 656, 657, 658, 659, 661, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 690, 691, 693, 694, 696, 697, 698, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 713, 714, 716, 717, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 743, 744, 745, 746, 747, 748, 749, 750, 751, 755, 756, 759, 768, 769, 779, 782, 783, 786, 787, 788, 789, 790, 796, 797, 803, 804, 817, 818, 823, 826, 832, 833, 834, 835, 836, 837, 843, 844, 849, 856, 857, 876, 877, 878, 879, 885, 886, 891, 895, 904, 905, 918, 919, 928, 932, 933, 934, 939, 947, 948, 951, 956, 961, 963, 964, 968, 969, 970, 973, 974, 977, 978, 979, 984, 994, 999, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1016, 1017, 1023, 1024, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1037, 1038, 1039, 1049, 1050, 1051, 1052, 1053, 1054, 1068, 1069, 1070, 1071, 1072, 1078, 1080, 1081, 1082, 1083, 1085, 1090, 1108, 1109, 1110, 1111, 1112, 1118, 1120, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1195, 1196, 1198, 1199, 1200, 1208, 1209, 1210, 1211, 1212, 1214, 1222, 1223, 1245, 1246, 1247, 1252, 1254, 1255, 1264, 1265, 1266, 1268, 1271, 1272, 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1285, 1286, 1287, 1289, 1290, 1291, 1292, 1293, 1294, 1297, 1300, 1306, 1307, 1308, 1309, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1322, 1323, 1324, 1327, 1333, 1334, 1335, 1336, 1337, 1338, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1356, 1365, 1373, 1380, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1404, 1405, 1407, 1408, 1409, 1411, 1412, 1420, 1421, 1422, 1423], "summary": {"covered_lines": 632, "num_statements": 658, "percent_covered": 95.12471655328798, "percent_covered_display": "95", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 96.04863221884499, "percent_statements_covered_display": "96", "num_branches": 224, "num_partial_branches": 17, "covered_branches": 207, "missing_branches": 17, "percent_branches_covered": 92.41071428571429, "percent_branches_covered_display": "92"}, "missing_lines": [185, 222, 581, 589, 645, 660, 692, 695, 870, 871, 892, 944, 962, 965, 995, 996, 1079, 1119, 1191, 1192, 1197, 1269, 1295, 1296, 1343, 1344], "excluded_lines": [], "executed_branches": [[88, 89], [88, 90], [92, 93], [92, 94], [125, 126], [125, 127], [128, 129], [128, 130], [130, 131], [130, 132], [138, 139], [138, 145], [140, 141], [140, 142], [154, 155], [154, 156], [165, 166], [165, 167], [171, 186], [187, 188], [187, 189], [189, 190], [189, 191], [207, 219], [207, 220], [221, 223], [225, 226], [225, 227], [232, 233], [232, 234], [258, 259], [258, 260], [260, 263], [260, 264], [267, 268], [267, 269], [269, 270], [269, 271], [271, 272], [271, 273], [278, 279], [278, 280], [291, 292], [291, 293], [294, 295], [294, 296], [297, 298], [297, 301], [298, 299], [298, 300], [301, 302], [301, 303], [304, -283], [304, 310], [346, 347], [346, 348], [348, 349], [348, 350], [384, 385], [384, 394], [387, 390], [387, 392], [394, -380], [394, 395], [399, -397], [399, 400], [415, 420], [415, 421], [421, 399], [421, 422], [426, 427], [426, 428], [437, 438], [437, 439], [469, 470], [469, 471], [486, 487], [486, 497], [498, 499], [498, 500], [510, 511], [510, 546], [512, 518], [512, 519], [533, 538], [533, 539], [555, 556], [555, 584], [560, 567], [560, 568], [584, 590], [599, 600], [599, 644], [604, 605], [604, 606], [606, 615], [606, 616], [629, 630], [629, 639], [639, 640], [639, 641], [644, 646], [646, 647], [646, 648], [656, 657], [656, 658], [659, 661], [664, 665], [664, 666], [691, 693], [694, 696], [698, 701], [698, 702], [731, 732], [731, 733], [734, 735], [734, 999], [735, 736], [735, 737], [739, 740], [739, 743], [744, 734], [744, 745], [745, 746], [745, 747], [751, 755], [751, 756], [768, 769], [768, 779], [782, 783], [782, 786], [789, 790], [789, 834], [797, 803], [797, 804], [818, 823], [818, 826], [836, 837], [836, 876], [849, 856], [849, 857], [878, 879], [878, 939], [891, 895], [895, 904], [895, 905], [918, 919], [918, 928], [928, 932], [928, 933], [939, 947], [947, 948], [947, 951], [961, 963], [963, 964], [963, 969], [964, 968], [969, 970], [969, 973], [973, 974], [973, 977], [1008, 1009], [1008, 1010], [1038, 1039], [1038, 1053], [1049, 1050], [1049, 1051], [1078, 1080], [1118, 1120], [1141, 1142], [1141, 1143], [1143, 1144], [1143, 1145], [1145, 1146], [1146, 1147], [1178, 1179], [1178, 1180], [1196, 1198], [1264, 1265], [1264, 1266], [1276, 1277], [1276, 1278], [1286, -1285], [1286, 1287], [1291, -1289], [1291, 1292], [1307, -1300], [1307, 1308], [1309, 1313], [1309, 1314], [1315, 1307], [1315, 1316], [1322, 1323], [1322, 1324], [1335, 1336], [1335, 1352], [1347, 1348], [1347, 1350], [1352, 1353], [1394, 1395], [1394, 1396], [1400, 1404], [1400, 1405], [1408, -1407], [1408, 1409], [1420, 1421], [1420, 1422]], "missing_branches": [[171, 185], [221, 222], [584, 589], [644, 645], [659, 660], [691, 692], [694, 695], [891, 892], [939, 944], [961, 962], [964, 965], [1078, 1079], [1118, 1119], [1145, 1149], [1146, 1148], [1196, 1197], [1352, -1327]], "functions": {"_sha256_file": {"executed_lines": [88, 89, 90, 91, 92, 93, 94], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [[88, 89], [88, 90], [92, 93], [92, 94]], "missing_branches": []}, "_journal_root": {"executed_lines": [98], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "_validated_glob": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "_load_hashed_json": {"executed_lines": [120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [[125, 126], [125, 127], [128, 129], [128, 130], [130, 131], [130, 132]], "missing_branches": []}, "_load_epoch_parts": {"executed_lines": [137, 138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[138, 139], [138, 145], [140, 141], [140, 142]], "missing_branches": []}, "_parse_created_at": {"executed_lines": [149, 150, 151, 152, 153, 154, 155, 156], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[154, 155], [154, 156]], "missing_branches": []}, "_validate_raw_references": {"executed_lines": [165, 166, 167, 168, 169, 170, 171, 186, 187, 188, 189, 190, 191], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [185], "excluded_lines": [], "start_line": 159, "executed_branches": [[165, 166], [165, 167], [171, 186], [187, 188], [187, 189], [189, 190], [189, 191]], "missing_branches": [[171, 185]]}, "_validate_prepared_binding": {"executed_lines": [205, 206, 207, 219, 220, 221, 223, 224, 225, 226, 227, 232, 233, 234], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [222], "excluded_lines": [], "start_line": 194, "executed_branches": [[207, 219], [207, 220], [221, 223], [225, 226], [225, 227], [232, 233], [232, 234]], "missing_branches": [[221, 222]]}, "_validate_terminal_binding": {"executed_lines": [251, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 278, 279, 280], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237, "executed_branches": [[258, 259], [258, 260], [260, 263], [260, 264], [267, 268], [267, 269], [269, 270], [269, 271], [271, 272], [271, 273], [278, 279], [278, 280]], "missing_branches": []}, "_validate_snapshot_binding": {"executed_lines": [290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 310], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [[291, 292], [291, 293], [294, 295], [294, 296], [297, 298], [297, 301], [298, 299], [298, 300], [301, 302], [301, 303], [304, -283], [304, 310]], "missing_branches": []}, "_open_journal_file": {"executed_lines": [314, 315, 316, 317, 318, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.__init__": {"executed_lines": [346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329, "executed_branches": [[346, 347], [346, 348], [348, 349], [348, 350]], "missing_branches": []}, "NormalizedEpochJournal.append": {"executed_lines": [381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380, "executed_branches": [[384, 385], [384, 394], [387, 390], [387, 392], [394, -380], [394, 395]], "missing_branches": []}, "NormalizedEpochJournal._append_bodies": {"executed_lines": [398, 399, 400, 401, 402, 407, 408, 409, 410, 411, 412, 413, 414, 415, 420, 421, 422], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, -397], [399, 400], [415, 420], [415, 421], [421, 399], [421, 422]], "missing_branches": []}, "NormalizedEpochJournal.flush": {"executed_lines": [425, 426, 427, 428, 429, 430, 431, 432], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424, "executed_branches": [[426, 427], [426, 428]], "missing_branches": []}, "NormalizedEpochJournal.record_segment": {"executed_lines": [435, 436, 437, 438, 439, 440], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 434, "executed_branches": [[437, 438], [437, 439]], "missing_branches": []}, "NormalizedEpochJournal.records": {"executed_lines": [444], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.recover": {"executed_lines": [466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 486, 487, 497, 498, 499, 500, 509, 510, 511, 512, 518, 519, 532, 533, 538, 539, 545, 546, 555, 556, 557, 560, 567, 568, 584, 590, 599, 600, 601, 604, 605, 606, 615, 616, 629, 630, 639, 640, 641, 644, 646, 647, 648, 651, 656, 657, 658, 659, 661, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 690, 691, 693, 694, 696, 697, 698, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 713, 714], "summary": {"covered_lines": 100, "num_statements": 106, "percent_covered": 92.66666666666667, "percent_covered_display": "93", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.33962264150944, "percent_statements_covered_display": "94", "num_branches": 44, "num_partial_branches": 5, "covered_branches": 39, "missing_branches": 5, "percent_branches_covered": 88.63636363636364, "percent_branches_covered_display": "89"}, "missing_lines": [581, 589, 645, 660, 692, 695], "excluded_lines": [], "start_line": 447, "executed_branches": [[469, 470], [469, 471], [486, 487], [486, 497], [498, 499], [498, 500], [510, 511], [510, 546], [512, 518], [512, 519], [533, 538], [533, 539], [555, 556], [555, 584], [560, 567], [560, 568], [584, 590], [599, 600], [599, 644], [604, 605], [604, 606], [606, 615], [606, 616], [629, 630], [629, 639], [639, 640], [639, 641], [644, 646], [646, 647], [646, 648], [656, 657], [656, 658], [659, 661], [664, 665], [664, 666], [691, 693], [694, 696], [698, 701], [698, 702]], "missing_branches": [[584, 589], [644, 645], [659, 660], [691, 692], [694, 695]]}, "NormalizedEpochJournal.reconcile_pending": {"executed_lines": [728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 743, 744, 745, 746, 747, 748, 749, 750, 751, 755, 756, 759, 768, 769, 779, 782, 783, 786, 787, 788, 789, 790, 796, 797, 803, 804, 817, 818, 823, 826, 832, 833, 834, 835, 836, 837, 843, 844, 849, 856, 857, 876, 877, 878, 879, 885, 886, 891, 895, 904, 905, 918, 919, 928, 932, 933, 934, 939, 947, 948, 951, 956, 961, 963, 964, 968, 969, 970, 973, 974, 977, 978, 979, 984, 994, 999], "summary": {"covered_lines": 89, "num_statements": 97, "percent_covered": 91.94630872483222, "percent_covered_display": "92", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 91.75257731958763, "percent_statements_covered_display": "92", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [870, 871, 892, 944, 962, 965, 995, 996], "excluded_lines": [], "start_line": 717, "executed_branches": [[731, 732], [731, 733], [734, 735], [734, 999], [735, 736], [735, 737], [739, 740], [739, 743], [744, 734], [744, 745], [745, 746], [745, 747], [751, 755], [751, 756], [768, 769], [768, 779], [782, 783], [782, 786], [789, 790], [789, 834], [797, 803], [797, 804], [818, 823], [818, 826], [836, 837], [836, 876], [849, 856], [849, 857], [878, 879], [878, 939], [891, 895], [895, 904], [895, 905], [918, 919], [918, 928], [928, 932], [928, 933], [939, 947], [947, 948], [947, 951], [961, 963], [963, 964], [963, 969], [964, 968], [969, 970], [969, 973], [973, 974], [973, 977]], "missing_branches": [[891, 892], [939, 944], [961, 962], [964, 965]]}, "NormalizedEpochJournal.finalize": {"executed_lines": [1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1016, 1017, 1023, 1024, 1029, 1030, 1031, 1032, 1033, 1034, 1035], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [[1008, 1009], [1008, 1010]], "missing_branches": []}, "NormalizedEpochJournal._prepare_transaction": {"executed_lines": [1038, 1039, 1049, 1050, 1051, 1052, 1053, 1054, 1068, 1069, 1070, 1071, 1072, 1078, 1080, 1081, 1082, 1083], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1079], "excluded_lines": [], "start_line": 1037, "executed_branches": [[1038, 1039], [1038, 1053], [1049, 1050], [1049, 1051], [1078, 1080]], "missing_branches": [[1078, 1079]]}, "NormalizedEpochJournal._write_committed_receipt": {"executed_lines": [1090, 1108, 1109, 1110, 1111, 1112, 1118, 1120], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1119], "excluded_lines": [], "start_line": 1085, "executed_branches": [[1118, 1120]], "missing_branches": [[1118, 1119]]}, "NormalizedEpochJournal.abort_visible": {"executed_lines": [1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1170, 1171, 1172, 1173, 1174, 1175], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [], "excluded_lines": [], "start_line": 1140, "executed_branches": [[1141, 1142], [1141, 1143], [1143, 1144], [1143, 1145], [1145, 1146], [1146, 1147]], "missing_branches": [[1145, 1149], [1146, 1148]]}, "NormalizedEpochJournal._seal_part": {"executed_lines": [1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1195, 1196, 1198, 1199, 1200, 1208, 1209, 1210, 1211, 1212], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1191, 1192, 1197], "excluded_lines": [], "start_line": 1177, "executed_branches": [[1178, 1179], [1178, 1180], [1196, 1198]], "missing_branches": [[1196, 1197]]}, "NormalizedEpochJournal._record_finalize_failure": {"executed_lines": [1222, 1223, 1245, 1246, 1247, 1252], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1214, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._publish_normalized": {"executed_lines": [1255, 1264, 1265, 1266], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1254, "executed_branches": [[1264, 1265], [1264, 1266]], "missing_branches": []}, "NormalizedEpochJournal._iter_record_batches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1269], "excluded_lines": [], "start_line": 1268, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._record_batch": {"executed_lines": [1276, 1277, 1278, 1279, 1280], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1272, "executed_branches": [[1276, 1277], [1276, 1278]], "missing_branches": []}, "NormalizedEpochJournal._iter_records": {"executed_lines": [1283], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1282, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._require_open": {"executed_lines": [1286, 1287], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1285, "executed_branches": [[1286, -1285], [1286, 1287]], "missing_branches": []}, "NormalizedEpochJournal.__del__": {"executed_lines": [1290, 1291, 1292, 1293, 1294, 1297], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1295, 1296], "excluded_lines": [], "start_line": 1289, "executed_branches": [[1291, -1289], [1291, 1292]], "missing_branches": []}, "_iter_epoch_records": {"executed_lines": [1306, 1307, 1308, 1309, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1322, 1323, 1324], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1300, "executed_branches": [[1307, -1300], [1307, 1308], [1309, 1313], [1309, 1314], [1315, 1307], [1315, 1316], [1322, 1323], [1322, 1324]], "missing_branches": []}, "_iter_epoch_record_batches": {"executed_lines": [1333, 1334, 1335, 1336, 1337, 1338, 1347, 1348, 1349, 1350, 1351, 1352, 1353], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1343, 1344], "excluded_lines": [], "start_line": 1327, "executed_branches": [[1335, 1336], [1335, 1352], [1347, 1348], [1347, 1350], [1352, 1353]], "missing_branches": [[1352, -1327]]}, "_publish_epoch_parts": {"executed_lines": [1365, 1373], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1356, "executed_branches": [], "missing_branches": []}, "_publish_epoch_group": {"executed_lines": [1394, 1395, 1396, 1397, 1398, 1399, 1400, 1404, 1405, 1407, 1411, 1412, 1420, 1421, 1422, 1423], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1380, "executed_branches": [[1394, 1395], [1394, 1396], [1400, 1404], [1400, 1405], [1420, 1421], [1420, 1422]], "missing_branches": []}, "_publish_epoch_group.batches": {"executed_lines": [1408, 1409], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1407, "executed_branches": [[1408, -1407], [1408, 1409]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 35, 36, 42, 43, 44, 45, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 87, 97, 107, 113, 136, 148, 159, 194, 237, 283, 313, 326, 329, 380, 397, 424, 434, 442, 443, 446, 447, 716, 717, 1001, 1037, 1085, 1140, 1177, 1214, 1254, 1268, 1271, 1272, 1282, 1285, 1289, 1300, 1327, 1356, 1380], "summary": {"covered_lines": 93, "num_statements": 93, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"EpochPart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "NormalizedEpochReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "_NormalizationSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal": {"executed_lines": [346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 398, 399, 400, 401, 402, 407, 408, 409, 410, 411, 412, 413, 414, 415, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 435, 436, 437, 438, 439, 440, 444, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 486, 487, 497, 498, 499, 500, 509, 510, 511, 512, 518, 519, 532, 533, 538, 539, 545, 546, 555, 556, 557, 560, 567, 568, 584, 590, 599, 600, 601, 604, 605, 606, 615, 616, 629, 630, 639, 640, 641, 644, 646, 647, 648, 651, 656, 657, 658, 659, 661, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 690, 691, 693, 694, 696, 697, 698, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 713, 714, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 743, 744, 745, 746, 747, 748, 749, 750, 751, 755, 756, 759, 768, 769, 779, 782, 783, 786, 787, 788, 789, 790, 796, 797, 803, 804, 817, 818, 823, 826, 832, 833, 834, 835, 836, 837, 843, 844, 849, 856, 857, 876, 877, 878, 879, 885, 886, 891, 895, 904, 905, 918, 919, 928, 932, 933, 934, 939, 947, 948, 951, 956, 961, 963, 964, 968, 969, 970, 973, 974, 977, 978, 979, 984, 994, 999, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1016, 1017, 1023, 1024, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1038, 1039, 1049, 1050, 1051, 1052, 1053, 1054, 1068, 1069, 1070, 1071, 1072, 1078, 1080, 1081, 1082, 1083, 1090, 1108, 1109, 1110, 1111, 1112, 1118, 1120, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1170, 1171, 1172, 1173, 1174, 1175, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1195, 1196, 1198, 1199, 1200, 1208, 1209, 1210, 1211, 1212, 1222, 1223, 1245, 1246, 1247, 1252, 1255, 1264, 1265, 1266, 1276, 1277, 1278, 1279, 1280, 1283, 1286, 1287, 1290, 1291, 1292, 1293, 1294, 1297], "summary": {"covered_lines": 379, "num_statements": 401, "percent_covered": 93.41864716636198, "percent_covered_display": "93", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 94.51371571072319, "percent_statements_covered_display": "95", "num_branches": 146, "num_partial_branches": 14, "covered_branches": 132, "missing_branches": 14, "percent_branches_covered": 90.41095890410959, "percent_branches_covered_display": "90"}, "missing_lines": [581, 589, 645, 660, 692, 695, 870, 871, 892, 944, 962, 965, 995, 996, 1079, 1119, 1191, 1192, 1197, 1269, 1295, 1296], "excluded_lines": [], "start_line": 326, "executed_branches": [[346, 347], [346, 348], [348, 349], [348, 350], [384, 385], [384, 394], [387, 390], [387, 392], [394, -380], [394, 395], [399, -397], [399, 400], [415, 420], [415, 421], [421, 399], [421, 422], [426, 427], [426, 428], [437, 438], [437, 439], [469, 470], [469, 471], [486, 487], [486, 497], [498, 499], [498, 500], [510, 511], [510, 546], [512, 518], [512, 519], [533, 538], [533, 539], [555, 556], [555, 584], [560, 567], [560, 568], [584, 590], [599, 600], [599, 644], [604, 605], [604, 606], [606, 615], [606, 616], [629, 630], [629, 639], [639, 640], [639, 641], [644, 646], [646, 647], [646, 648], [656, 657], [656, 658], [659, 661], [664, 665], [664, 666], [691, 693], [694, 696], [698, 701], [698, 702], [731, 732], [731, 733], [734, 735], [734, 999], [735, 736], [735, 737], [739, 740], [739, 743], [744, 734], [744, 745], [745, 746], [745, 747], [751, 755], [751, 756], [768, 769], [768, 779], [782, 783], [782, 786], [789, 790], [789, 834], [797, 803], [797, 804], [818, 823], [818, 826], [836, 837], [836, 876], [849, 856], [849, 857], [878, 879], [878, 939], [891, 895], [895, 904], [895, 905], [918, 919], [918, 928], [928, 932], [928, 933], [939, 947], [947, 948], [947, 951], [961, 963], [963, 964], [963, 969], [964, 968], [969, 970], [969, 973], [973, 974], [973, 977], [1008, 1009], [1008, 1010], [1038, 1039], [1038, 1053], [1049, 1050], [1049, 1051], [1078, 1080], [1118, 1120], [1141, 1142], [1141, 1143], [1143, 1144], [1143, 1145], [1145, 1146], [1146, 1147], [1178, 1179], [1178, 1180], [1196, 1198], [1264, 1265], [1264, 1266], [1276, 1277], [1276, 1278], [1286, -1285], [1286, 1287], [1291, -1289], [1291, 1292]], "missing_branches": [[584, 589], [644, 645], [659, 660], [691, 692], [694, 695], [891, 892], [939, 944], [961, 962], [964, 965], [1078, 1079], [1118, 1119], [1145, 1149], [1146, 1148], [1196, 1197]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 29, 35, 36, 42, 43, 44, 45, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 91, 92, 93, 94, 97, 98, 107, 108, 109, 110, 113, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, 151, 152, 153, 154, 155, 156, 159, 165, 166, 167, 168, 169, 170, 171, 186, 187, 188, 189, 190, 191, 194, 205, 206, 207, 219, 220, 221, 223, 224, 225, 226, 227, 232, 233, 234, 237, 251, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 278, 279, 280, 283, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 310, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 326, 329, 380, 397, 424, 434, 442, 443, 446, 447, 716, 717, 1001, 1037, 1085, 1140, 1177, 1214, 1254, 1268, 1271, 1272, 1282, 1285, 1289, 1300, 1306, 1307, 1308, 1309, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1322, 1323, 1324, 1327, 1333, 1334, 1335, 1336, 1337, 1338, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1356, 1365, 1373, 1380, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1404, 1405, 1407, 1408, 1409, 1411, 1412, 1420, 1421, 1422, 1423], "summary": {"covered_lines": 253, "num_statements": 257, "percent_covered": 97.91044776119404, "percent_covered_display": "98", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 98.44357976653697, "percent_statements_covered_display": "98", "num_branches": 78, "num_partial_branches": 3, "covered_branches": 75, "missing_branches": 3, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [185, 222, 1343, 1344], "excluded_lines": [], "start_line": 1, "executed_branches": [[88, 89], [88, 90], [92, 93], [92, 94], [125, 126], [125, 127], [128, 129], [128, 130], [130, 131], [130, 132], [138, 139], [138, 145], [140, 141], [140, 142], [154, 155], [154, 156], [165, 166], [165, 167], [171, 186], [187, 188], [187, 189], [189, 190], [189, 191], [207, 219], [207, 220], [221, 223], [225, 226], [225, 227], [232, 233], [232, 234], [258, 259], [258, 260], [260, 263], [260, 264], [267, 268], [267, 269], [269, 270], [269, 271], [271, 272], [271, 273], [278, 279], [278, 280], [291, 292], [291, 293], [294, 295], [294, 296], [297, 298], [297, 301], [298, 299], [298, 300], [301, 302], [301, 303], [304, -283], [304, 310], [1307, -1300], [1307, 1308], [1309, 1313], [1309, 1314], [1315, 1307], [1315, 1316], [1322, 1323], [1322, 1324], [1335, 1336], [1335, 1352], [1347, 1348], [1347, 1350], [1352, 1353], [1394, 1395], [1394, 1396], [1400, 1404], [1400, 1405], [1408, -1407], [1408, 1409], [1420, 1421], [1420, 1422]], "missing_branches": [[171, 185], [221, 222], [1352, -1327]]}}}, "src\\quant_data_kit\\capture_v2\\models.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 74, 76, 80, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 123, 124, 127, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 217, 219, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 338, 339, 340, 341, 348, 356, 357, 358, 359, 367, 368, 372, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 415, 416, 417, 419, 420, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 489, 492, 494, 495, 506, 509, 510, 511, 512, 513, 515, 516, 520, 524, 525, 542, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 563, 564, 565, 567, 568, 569, 571, 577, 578, 579, 585, 588, 592, 593, 594, 596, 599, 603, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 346, "num_statements": 354, "percent_covered": 96.62162162162163, "percent_covered_display": "97", "missing_lines": 8, "excluded_lines": 5, "percent_statements_covered": 97.74011299435028, "percent_statements_covered_display": "98", "num_branches": 90, "num_partial_branches": 7, "covered_branches": 83, "missing_branches": 7, "percent_branches_covered": 92.22222222222223, "percent_branches_covered_display": "92"}, "missing_lines": [77, 128, 164, 166, 168, 189, 517, 625], "excluded_lines": [67, 68, 69, 70, 71], "executed_branches": [[90, 91], [90, 92], [104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119], [138, 139], [138, 140], [140, -137], [140, 141], [163, 165], [165, 167], [167, -156], [186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212], [235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248], [261, 262], [261, 295], [295, 301], [295, 315], [339, 340], [339, 341], [367, 368], [367, 372], [392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474], [516, -515], [578, 579], [578, 592], [621, 622], [624, 633], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": [[163, 164], [165, 166], [167, 168], [188, 189], [516, 517], [621, 634], [624, 625]], "functions": {"utc_text": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "canonical_json_bytes": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "Clock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67], "start_line": 67, "executed_branches": [], "missing_branches": []}, "Clock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69], "start_line": 69, "executed_branches": [], "missing_branches": []}, "SystemClock.now": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73, "executed_branches": [], "missing_branches": []}, "SystemClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.__init__": {"executed_lines": [84, 85], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.now": {"executed_lines": [88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy.__post_init__": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111]], "missing_branches": []}, "RetryPolicy.delay": {"executed_lines": [114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [[114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "random_jitter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "SegmentRotation.__post_init__": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy.__post_init__": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 156, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig.__post_init__": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [189], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202]], "missing_branches": [[188, 189]]}, "StreamConfig.capability": {"executed_lines": [206, 207, 208, 209, 210, 212, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [[207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": []}, "StreamConfig.mapping_source": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217, "executed_branches": [], "missing_branches": []}, "CaptureConfig.__post_init__": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "CaptureConfig.providers": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureConfig.capabilities": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "default_crypto_l2_streams": {"executed_lines": [260, 261, 262, 263, 278, 295, 301, 302, 303, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315]], "missing_branches": []}, "default_symbol_mappings": {"executed_lines": [323, 324], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318, "executed_branches": [], "missing_branches": []}, "SymbolMappingResolver.__init__": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "SymbolMappingResolver.resolve": {"executed_lines": [356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348, "executed_branches": [[367, 368], [367, 372]], "missing_branches": []}, "RawFrame.__post_init__": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409]], "missing_branches": []}, "RawFrame.raw_sha256": {"executed_lines": [417], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416, "executed_branches": [], "missing_branches": []}, "RawFrame.record": {"executed_lines": [420], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419, "executed_branches": [], "missing_branches": []}, "RawFrame.from_record": {"executed_lines": [441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent.__post_init__": {"executed_lines": [489, 492], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [], "missing_branches": []}, "AuditEvent.payload": {"executed_lines": [495, 506], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "AuditReference.__post_init__": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 515, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "CaptureStateMachine.__init__": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.events": {"executed_lines": [565], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.references": {"executed_lines": [569], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 568, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.transition": {"executed_lines": [577, 578, 579, 585, 588, 592, 593, 594], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [[578, 579], [578, 592]], "missing_branches": []}, "CaptureStateMachine.audit": {"executed_lines": [599], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine._record": {"executed_lines": [610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [625], "excluded_lines": [], "start_line": 603, "executed_branches": [[621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "assert_m7_scope": {"executed_lines": [639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 638, "executed_branches": [[642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655]], "missing_branches": []}, "_validate_public_url": {"executed_lines": [664, 665, 672], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [[665, -663], [665, 672]], "missing_branches": []}, "_canonical_url_identity": {"executed_lines": [678, 679], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_m7_stream_identity": {"executed_lines": [689], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 688, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 56, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 318, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 663, 675, 688], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "MarketKind": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CaptureState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": []}, "Clock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67, 69], "start_line": 66, "executed_branches": [], "missing_branches": []}, "SystemClock": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock": {"executed_lines": [84, 85, 88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "SegmentRotation": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 145, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 206, 207, 208, 209, 210, 212, 213, 214, 219], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [189], "excluded_lines": [], "start_line": 172, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": [[188, 189]]}, "CaptureConfig": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "SymbolMappingResolver": {"executed_lines": [338, 339, 340, 341, 356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [[339, 340], [339, 341], [367, 368], [367, 372]], "missing_branches": []}, "RawFrame": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 417, 420, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent": {"executed_lines": [489, 492, 495, 506], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 478, "executed_branches": [], "missing_branches": []}, "AuditReference": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 510, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "AuditPersistenceError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 520, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 565, 569, 577, 578, 579, 585, 588, 592, 593, 594, 599, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 92.5, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [625], "excluded_lines": [], "start_line": 524, "executed_branches": [[578, 579], [578, 592], [621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 195, "num_statements": 196, "percent_covered": 99.52380952380952, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 99.48979591836735, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 61, 62, 63, 64, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 204, 207, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 398, 399, 400, 401, 411, 412, 413, 415, 416, 422, 423, 424, 426, 427, 428, 429, 430, 432, 433, 434, 436, 437, 438, 440, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 467, 468, 469, 470, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 516, 517, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 544, 545, 546, 547, 549, 550, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737, 740, 741, 742, 750, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781, 784, 787, 796, 797, 798, 799, 800, 801, 802, 809, 810, 812, 813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 851, 854, 863, 864, 865, 866, 867, 868, 870, 871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942, 944, 945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042, 1051, 1052, 1053, 1054, 1055, 1056, 1059, 1060, 1065, 1066, 1067, 1068, 1069, 1071, 1072, 1080, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 621, "num_statements": 659, "percent_covered": 93.83647798742139, "percent_covered_display": "94", "missing_lines": 38, "excluded_lines": 6, "percent_statements_covered": 94.23368740515933, "percent_statements_covered_display": "94", "num_branches": 136, "num_partial_branches": 5, "covered_branches": 125, "missing_branches": 11, "percent_branches_covered": 91.91176470588235, "percent_branches_covered_display": "92"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 728, 730, 733, 743, 744, 745, 747, 882, 883, 888, 889, 947, 991, 992], "excluded_lines": [68, 69, 70, 72, 73, 74], "executed_branches": [[62, 63], [62, 64], [94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467], [525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [722, 723], [722, 731], [732, 734], [741, 742], [753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781], [813, 814], [813, 815], [831, 832], [831, 833], [842, 843], [842, 844], [846, 847], [846, 848], [871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918], [946, 948], [1009, 1010], [1009, 1011], [1059, -1051], [1059, 1060], [1067, 1068], [1067, 1069], [1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [732, 733], [741, 743], [780, -750], [946, 947]], "functions": {"VolumeIdentity.__post_init__": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 68, "executed_branches": [], "missing_branches": []}, "CapacityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 72, "executed_branches": [], "missing_branches": []}, "default_capacity_probe": {"executed_lines": [76, 77], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity": {"executed_lines": [81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145]], "missing_branches": []}, "_linux_physical_devices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166]]}, "default_volume_identity": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [181, 182], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180]], "missing_branches": [[179, 181]]}, "StoragePreflight.alert": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.__init__": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [[229, 230], [229, 231]], "missing_branches": []}, "CaptureStorageGuard._tree_size": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._minimum_free": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.preflight": {"executed_lines": [262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335]], "missing_branches": []}, "CaptureStorageGuard.require_preflight": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "CaptureStorageGuard.require_hot_capacity": {"executed_lines": [344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366]], "missing_branches": []}, "CaptureStorageGuard.require_archive_capacity": {"executed_lines": [371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394]], "missing_branches": []}, "CaptureStorageGuard.probe_statistics": {"executed_lines": [400, 401], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.force_hot_probe": {"executed_lines": [412, 413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_due": {"executed_lines": [416], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_capacity": {"executed_lines": [423, 424], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_hot_size": {"executed_lines": [427, 428, 429, 430], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 426, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._ensure_hot_baseline": {"executed_lines": [433, 434], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [[433, -432], [433, 434]], "missing_branches": []}, "CaptureStorageGuard._ensure_archive_baseline": {"executed_lines": [437, 438], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [[437, -436], [437, 438]], "missing_branches": []}, "CaptureStorageGuard._refresh_hot": {"executed_lines": [441, 442, 443, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[451, 452], [451, 453]], "missing_branches": []}, "CaptureStorageGuard._refresh_archive": {"executed_lines": [460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459, "executed_branches": [[462, 463], [462, 467]], "missing_branches": []}, "RawSegmentWriter.__init__": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 491, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.pending_messages": {"executed_lines": [518], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.segment_count": {"executed_lines": [522], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.append": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542]], "missing_branches": []}, "RawSegmentWriter.drain_completed": {"executed_lines": [545, 546, 547], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.peek_completed": {"executed_lines": [550], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 549, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.acknowledge_completed": {"executed_lines": [553, 554, 555], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552, "executed_branches": [[553, 554], [553, 555]], "missing_branches": []}, "RawSegmentWriter.flush": {"executed_lines": [558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "_sha256_file": {"executed_lines": [668, 669, 670, 671, 672], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[670, 671], [670, 672]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [676, 677, 678, 679, 680, 681, 682], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [[676, 677], [676, 678]], "missing_branches": []}, "_validate_safe_path": {"executed_lines": [686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [708, 709, 713, 714], "excluded_lines": [], "start_line": 685, "executed_branches": [[688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706]], "missing_branches": []}, "_safe_mkdir": {"executed_lines": [719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [728, 730, 733], "excluded_lines": [], "start_line": 718, "executed_branches": [[722, 723], [722, 731], [732, 734]], "missing_branches": [[732, 733]]}, "_fsync_directory": {"executed_lines": [741, 742], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [743, 744, 745, 747], "excluded_lines": [], "start_line": 740, "executed_branches": [[741, 742]], "missing_branches": [[741, 743]]}, "_atomic_immutable_write": {"executed_lines": [753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 750, "executed_branches": [[753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781]], "missing_branches": [[780, -750]]}, "DurableAuditStore.__init__": {"executed_lines": [796, 797, 798, 799, 800, 801, 802, 809, 810], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 787, "executed_branches": [], "missing_branches": []}, "DurableAuditStore.append": {"executed_lines": [813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 812, "executed_branches": [[813, 814], [813, 815], [831, 832], [831, 833]], "missing_branches": []}, "DurableAuditStore.load": {"executed_lines": [837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [[842, 843], [842, 844], [846, 847], [846, 848]], "missing_branches": []}, "LocalArchiveController.__init__": {"executed_lines": [863, 864, 865, 866, 867, 868], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 854, "executed_branches": [], "missing_branches": []}, "LocalArchiveController.preflight": {"executed_lines": [871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [882, 883, 888, 889], "excluded_lines": [], "start_line": 870, "executed_branches": [[871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918]], "missing_branches": []}, "LocalArchiveController.archive_segment": {"executed_lines": [945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042], "summary": {"covered_lines": 44, "num_statements": 47, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.61702127659575, "percent_statements_covered_display": "94", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [947, 991, 992], "excluded_lines": [], "start_line": 944, "executed_branches": [[946, 948], [1009, 1010], [1009, 1011]], "missing_branches": [[946, 947]]}, "LocalArchiveController._assert_identity": {"executed_lines": [1052, 1053, 1054, 1055, 1056, 1059, 1060], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1051, "executed_branches": [[1059, -1051], [1059, 1060]], "missing_branches": []}, "LocalArchiveController._remove_restore_temp": {"executed_lines": [1066, 1067, 1068, 1069], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1065, "executed_branches": [[1067, 1068], [1067, 1069]], "missing_branches": []}, "LocalArchiveController._hot_object_dir": {"executed_lines": [1072, 1080], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1071, "executed_branches": [], "missing_branches": []}, "iter_segment_frames": {"executed_lines": [1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1083, "executed_branches": [[1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 80, 154, 177, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 675, 685, 718, 740, 750, 784, 787, 812, 836, 851, 854, 870, 944, 1051, 1065, 1071, 1083], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CapturePausedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "DiskCapacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "VolumeIdentity": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 67, "executed_branches": [], "missing_branches": []}, "CapacityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.DiskExtent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.VolumeDiskExtents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "StoragePreflight": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 400, 401, 412, 413, 416, 423, 424, 427, 428, 429, 430, 433, 434, 437, 438, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 40, "num_partial_branches": 0, "covered_branches": 40, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [[229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467]], "missing_branches": []}, "RawSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 518, 522, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 545, 546, 547, 550, 553, 554, 555, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "ArchivePreflightReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 632, "executed_branches": [], "missing_branches": []}, "SegmentArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [], "missing_branches": []}, "DurableAuditStore": {"executed_lines": [796, 797, 798, 799, 800, 801, 802, 809, 810, 813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 784, "executed_branches": [[813, 814], [813, 815], [831, 832], [831, 833], [842, 843], [842, 844], [846, 847], [846, 848]], "missing_branches": []}, "LocalArchiveController": {"executed_lines": [863, 864, 865, 866, 867, 868, 871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942, 945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042, 1052, 1053, 1054, 1055, 1056, 1059, 1060, 1066, 1067, 1068, 1069, 1072, 1080], "summary": {"covered_lines": 95, "num_statements": 102, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 93.13725490196079, "percent_statements_covered_display": "93", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [882, 883, 888, 889, 947, 991, 992], "excluded_lines": [], "start_line": 851, "executed_branches": [[871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918], [946, 948], [1009, 1010], [1009, 1011], [1059, -1051], [1059, 1060], [1067, 1068], [1067, 1069]], "missing_branches": [[946, 947]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737, 740, 741, 742, 750, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781, 784, 787, 812, 836, 851, 854, 870, 944, 1051, 1065, 1071, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 277, "num_statements": 308, "percent_covered": 88.67403314917127, "percent_covered_display": "89", "missing_lines": 31, "excluded_lines": 4, "percent_statements_covered": 89.93506493506493, "percent_statements_covered_display": "90", "num_branches": 54, "num_partial_branches": 4, "covered_branches": 44, "missing_branches": 10, "percent_branches_covered": 81.48148148148148, "percent_branches_covered_display": "81"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 728, 730, 733, 743, 744, 745, 747], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [722, 723], [722, 731], [732, 734], [741, 742], [753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781], [1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [732, 733], [741, 743], [780, -750]]}}}, "src\\quant_data_kit\\capture_v2\\synchronizers.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 180, 181, 184, 187, 188, 189, 190, 191, 192, 204, 205, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 330, 331, 332, 338, 339, 340, 341, 344, 347, 348, 349, 350, 351, 352, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 278, "num_statements": 302, "percent_covered": 93.87755102040816, "percent_covered_display": "94", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 92.05298013245033, "percent_statements_covered_display": "92", "num_branches": 90, "num_partial_branches": 0, "covered_branches": 90, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98, 250, 251, 323, 324, 422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101], [112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174], [188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341], [348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": [], "functions": {"_json_object": {"executed_lines": [48, 49, 52, 53, 54, 55, 56], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 47, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56]], "missing_branches": []}, "_received_milliseconds": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_provider_event_milliseconds": {"executed_lines": [65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [70, 71], "excluded_lines": [], "start_line": 64, "executed_branches": [[65, 66], [65, 72], [67, 65], [67, 68]], "missing_branches": []}, "_utc_event_datetime": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_price": {"executed_lines": [85, 86, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [87, 88], "excluded_lines": [], "start_line": 84, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "_quantity": {"executed_lines": [95, 96, 99, 100, 101], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [97, 98], "excluded_lines": [], "start_line": 94, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "_TrackedBook.__init__": {"executed_lines": [106, 107], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "_TrackedBook.snapshot": {"executed_lines": [110, 111, 112, 113, 114], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [[112, 113], [112, 114]], "missing_branches": []}, "_TrackedBook._snapshot_side": {"executed_lines": [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [[119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128]], "missing_branches": []}, "_TrackedBook.filter_delta": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[143, 144], [143, 145]], "missing_branches": []}, "_TrackedBook._filter_side": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "_TrackedBook.commit": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.__init__": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [[188, 189], [188, 190]], "missing_branches": []}, "BinanceBookSynchronizer.live": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_snapshot": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_update": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328], "summary": {"covered_lines": 42, "num_statements": 46, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 241, "executed_branches": [[242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301]], "missing_branches": []}, "BinanceBookSynchronizer._assert_mapping": {"executed_lines": [331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330, "executed_branches": [[340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer.__init__": {"executed_lines": [348, 349, 350, 351, 352, 363, 364], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347, "executed_branches": [[348, 349], [348, 350]], "missing_branches": []}, "OKXBookSynchronizer.live": {"executed_lines": [368], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "OKXBookSynchronizer.admit_message": {"executed_lines": [371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403]], "missing_branches": []}, "OKXBookSynchronizer._admit_item": {"executed_lines": [415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 47, "num_statements": 57, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 82.45614035087719, "percent_statements_covered_display": "82", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 409, "executed_branches": [[415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 59, 64, 75, 84, 94, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"ResyncRequired": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "Observation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "NormalizationOutcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "_TrackedBook": {"executed_lines": [106, 107, 110, 111, 112, 113, 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 138, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 181], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "BinanceBookSynchronizer": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 75, "num_statements": 79, "percent_covered": 96.11650485436893, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.9367088607595, "percent_statements_covered_display": "95", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 184, "executed_branches": [[188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer": {"executed_lines": [348, 349, 350, 351, 352, 363, 364, 368, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 79, "num_statements": 89, "percent_covered": 91.73553719008264, "percent_covered_display": "92", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.76404494382022, "percent_statements_covered_display": "89", "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 344, "executed_branches": [[348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 78, "num_statements": 88, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98], "excluded_lines": [], "start_line": 1, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\transport.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 41, 42, 43, 45, 46, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 75, 76, 77, 81, 82, 83, 84, 85, 86, 87, 91, 92, 95, 98, 99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 13, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36], "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65], [83, 84], [83, 85], [85, 86], [85, 87], [99, 100], [99, 101]], "missing_branches": [], "functions": {"HttpClient.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 22, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 26, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [28], "start_line": 28, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30], "start_line": 30, "executed_branches": [], "missing_branches": []}, "WebSocketConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 34, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient.get": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[41, 42], [41, 43]], "missing_branches": []}, "UrllibHttpClient._get": {"executed_lines": [47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [[61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection.__init__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.send": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.receive": {"executed_lines": [76, 77, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "_WebsocketsConnection.close": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "WebsocketsConnector.connect": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"HttpResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "HttpClient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 21, "executed_branches": [], "missing_branches": []}, "WebSocketConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26, 28, 30], "start_line": 25, "executed_branches": [], "missing_branches": []}, "WebSocketConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 33, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient": {"executed_lines": [41, 42, 43, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection": {"executed_lines": [70, 73, 76, 77, 81, 82, 83, 84, 85, 86, 87, 92], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "WebsocketsConnector": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\catalog.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 52, 56, 57, 58, 62, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 88, 89, 91], "summary": {"covered_lines": 58, "num_statements": 62, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]], "functions": {"DataCatalog.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32], [31, 36]], "missing_branches": []}, "DataCatalog.ensure_default_stack": {"executed_lines": [41, 42, 43, 44, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47]], "missing_branches": []}, "DataCatalog.list_stack_dependencies": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "DataCatalog.register_stack_dependency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "DataCatalog.save": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "DataCatalog.register": {"executed_lines": [65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[70, 71]], "missing_branches": [[70, 74]]}, "DataCatalog.list": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "DataCatalog.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [92, 93], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "DataCatalog": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 57, 58, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 89], "summary": {"covered_lines": 31, "num_statements": 35, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.57142857142857, "percent_statements_covered_display": "89", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "start_line": 25, "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]], "functions": {"main_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "main_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "main_catalog": {"executed_lines": [36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [55, 56, 57], "excluded_lines": [], "start_line": 35, "executed_branches": [[54, 59]], "missing_branches": [[54, 55]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 68], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [69], "excluded_lines": [], "start_line": 1, "executed_branches": [[68, -1]], "missing_branches": [[68, 69]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]]}}}, "src\\quant_data_kit\\curated.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 4, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 48, 49, 50], "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]], "functions": {"Curator.curate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_canonical": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_hash_bytes": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "_hash_file": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [[94, 95], [94, 96]], "missing_branches": []}, "_json_value": {"executed_lines": [100, 101, 102, 103, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [105], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108]], "missing_branches": [[104, 105]]}, "_dataset_segment": {"executed_lines": [112, 113, 114, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [[112, 113], [112, 114], [114, 127], [114, 128]], "missing_branches": []}, "_revision_segment": {"executed_lines": [132, 133, 134, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [], "missing_branches": []}, "_utc": {"executed_lines": [139, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[144, 145], [144, 146]], "missing_branches": []}, "_utc_text": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "_fixed_decimal": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [], "missing_branches": []}, "_fixed": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "build_session_bars": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244]], "missing_branches": []}, "_arrow_ready_bar": {"executed_lines": [248, 249, 250, 251, 252, 255, 256, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256]], "missing_branches": []}, "_snapshot_identity": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "_revision_record": {"executed_lines": [284, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [], "missing_branches": []}, "_validate_revision_record": {"executed_lines": [299, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295, "executed_branches": [[301, 302], [301, 303], [304, -295], [304, 305]], "missing_branches": []}, "_recover_missing_revision": {"executed_lines": [318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 85.18518518518519, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [320, 324], "excluded_lines": [], "start_line": 311, "executed_branches": [[319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337]], "missing_branches": [[319, 320], [323, 324]]}, "_publish_curated_snapshot": {"executed_lines": [357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [389], "excluded_lines": [], "start_line": 349, "executed_branches": [[364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399]], "missing_branches": [[388, 389]]}, "_write_curated_bars": {"executed_lines": [413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [[416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472]], "missing_branches": []}, "curate_trade_bars_from_snapshot": {"executed_lines": [524, 525, 526, 527, 528, 529, 536], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [[527, 528], [527, 529]], "missing_branches": []}, "_load_curated_snapshot": {"executed_lines": [554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652], "summary": {"covered_lines": 59, "num_statements": 61, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.72131147540983, "percent_statements_covered_display": "97", "num_branches": 36, "num_partial_branches": 2, "covered_branches": 34, "missing_branches": 2, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [620, 624], "excluded_lines": [], "start_line": 547, "executed_branches": [[556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[619, 620], [623, 624]]}, "load_curated_snapshot": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 87, 91, 99, 111, 131, 138, 149, 153, 157, 161, 247, 262, 283, 295, 311, 349, 402, 511, 547, 655], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Curator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 45, "executed_branches": [], "missing_branches": []}, "CuratedPartition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "CuratedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]]}}}, "src\\quant_data_kit\\data_lake.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 222, 223, 224, 226, 227, 229, 230, 232, 234, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017, 2020, 2023, 2024, 2026, 2027, 2028], "summary": {"covered_lines": 1066, "num_statements": 1115, "percent_covered": 94.28379287155346, "percent_covered_display": "94", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 95.60538116591928, "percent_statements_covered_display": "96", "num_branches": 372, "num_partial_branches": 32, "covered_branches": 336, "missing_branches": 36, "percent_branches_covered": 90.3225806451613, "percent_branches_covered_display": "90"}, "missing_lines": [259, 388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88], [237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266], [318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958], [1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": [[256, 259], [387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]], "functions": {"StoragePolicy.__post_init__": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "RawObjectManifest.reference": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__init__": {"executed_lines": [222, 223, 224], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__len__": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__iter__": {"executed_lines": [230, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__getitem__": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [259], "excluded_lines": [], "start_line": 234, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258]], "missing_branches": [[256, 259]]}, "EventClaimSequence.__eq__": {"executed_lines": [262, 263, 264, 265, 266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": []}, "EventClaimSequence.__repr__": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268, "executed_branches": [], "missing_branches": []}, "_canonical_json_bytes": {"executed_lines": [307], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306, "executed_branches": [], "missing_branches": []}, "_json_evidence": {"executed_lines": [318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332]], "missing_branches": []}, "_sha256_bytes": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "_sha256_file": {"executed_lines": [344, 345, 346, 347, 348], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[346, 347], [346, 348]], "missing_branches": []}, "_utc_datetime": {"executed_lines": [352, 357, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [[357, 358], [357, 359]], "missing_branches": []}, "_utc_text": {"executed_lines": [363], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "_segment": {"executed_lines": [367, 368, 369, 374, 375], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [[367, 368], [367, 369], [369, 374], [369, 375]], "missing_branches": []}, "_partition_segment": {"executed_lines": [379, 380, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381], [381, 382], [381, 383]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [387, 389, 390, 391, 392, 393], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [388], "excluded_lines": [], "start_line": 386, "executed_branches": [[387, 389]], "missing_branches": [[387, 388]]}, "_resolved_lake_root": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404]], "missing_branches": []}, "_validate_lake_path": {"executed_lines": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433], "summary": {"covered_lines": 21, "num_statements": 25, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.0, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [426, 427, 431, 432], "excluded_lines": [], "start_line": 407, "executed_branches": [[416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424]], "missing_branches": []}, "_mkdir_in_lake": {"executed_lines": [437, 442, 443, 444, 445, 446], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [], "missing_branches": []}, "_atomic_write_bytes": {"executed_lines": [451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [[455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472]], "missing_branches": []}, "_lake_lock": {"executed_lines": [477, 478, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476, "executed_branches": [], "missing_branches": []}, "_stable_staging_directory": {"executed_lines": [494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [[498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510]], "missing_branches": []}, "_tree_size": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513, "executed_branches": [[514, 515], [514, 516]], "missing_branches": []}, "_disk_probe_path": {"executed_lines": [520, 521, 522, 523], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[521, 522], [521, 523]], "missing_branches": []}, "evaluate_capacity": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526, "executed_branches": [[536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563]], "missing_branches": []}, "require_collection_capacity": {"executed_lines": [583, 591, 592, 593], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[591, 592], [591, 593]], "missing_branches": []}, "_raw_manifest_identity": {"executed_lines": [597], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "_raw_key_dir": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 614, "executed_branches": [], "missing_branches": []}, "_raw_object_dir": {"executed_lines": [630], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "_raw_tombstone_path": {"executed_lines": [642], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "_raw_deleting_dir": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "_raw_claim_path": {"executed_lines": [666], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "_raw_lock_identity": {"executed_lines": [676], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_raw_key_claim": {"executed_lines": [683, 691], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "_load_raw_key_claim": {"executed_lines": [698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [[705, 706], [705, 707], [708, 709], [708, 712]], "missing_branches": []}, "_ensure_raw_key_claim": {"executed_lines": [716, 717, 718, 719, 720, 725], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [[717, 718], [717, 719]], "missing_branches": []}, "_raw_stage_prefix": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 728, "executed_branches": [], "missing_branches": []}, "_validate_raw_manifest": {"executed_lines": [734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733, "executed_branches": [[734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760]], "missing_branches": []}, "_load_raw_from_dir": {"executed_lines": [770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792]], "missing_branches": []}, "_relocate_invalid_raw": {"executed_lines": [796, 797, 798, 799, 800, 801, 807, 808, 812], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795, "executed_branches": [], "missing_branches": []}, "_remove_staging_directory": {"executed_lines": [816, 817, 818, 819, 820], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [[818, 819], [818, 820]], "missing_branches": []}, "_recover_raw_staging": {"executed_lines": [828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [842, 849], "excluded_lines": [], "start_line": 823, "executed_branches": [[831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850]], "missing_branches": [[841, 842], [848, 849]]}, "write_raw_bytes": {"executed_lines": [869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [938, 946], "excluded_lines": [], "start_line": 858, "executed_branches": [[871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945]], "missing_branches": [[937, 938], [944, 946]]}, "_local_archive_path": {"executed_lines": [980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [989], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998]], "missing_branches": [[988, 989]]}, "_verify_archive_restore": {"executed_lines": [1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [], "missing_branches": []}, "_read_cleanup_audit": {"executed_lines": [1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [[1029, 1030], [1029, 1031]], "missing_branches": []}, "_load_archived_raw_reference": {"executed_lines": [1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1038, 1039, 1042, 1049, 1051], "excluded_lines": [], "start_line": 1034, "executed_branches": [[1041, 1043], [1050, 1052]], "missing_branches": [[1041, 1042], [1050, 1051]]}, "_validate_cleanup_receipt": {"executed_lines": [1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1055, "executed_branches": [[1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081]], "missing_branches": []}, "_finalize_raw_deleting": {"executed_lines": [1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1093, 1098, 1100, 1109, 1110, 1112], "excluded_lines": [], "start_line": 1084, "executed_branches": [[1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113]], "missing_branches": [[1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112]]}, "validate_raw_reference": {"executed_lines": [1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1132], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138]], "missing_branches": [[1131, 1132]]}, "load_raw_object": {"executed_lines": [1145, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [], "missing_branches": []}, "cleanup_archived_raw_object": {"executed_lines": [1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.53968253968254, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 86.04651162790698, "percent_statements_covered_display": "86", "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1175, 1176, 1179, 1181, 1190, 1203], "excluded_lines": [], "start_line": 1152, "executed_branches": [[1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217]], "missing_branches": [[1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218]]}, "_event_schema_id": {"executed_lines": [1239, 1240, 1241, 1242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "_stream_key": {"executed_lines": [1246, 1247, 1252, 1253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1245, "executed_branches": [], "missing_branches": []}, "_arrow_ready": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [1261], "excluded_lines": [], "start_line": 1256, "executed_branches": [[1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265]], "missing_branches": [[1260, 1261]]}, "_validated_table": {"executed_lines": [1270, 1271, 1274, 1275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1269, "executed_branches": [], "missing_branches": []}, "_normalized_snapshot_payload": {"executed_lines": [1287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1278, "executed_branches": [], "missing_branches": []}, "_validate_quarantine_batch": {"executed_lines": [1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1299, "executed_branches": [[1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318]], "missing_branches": []}, "_event_claim_reference": {"executed_lines": [1322, 1323, 1324, 1327, 1335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1321, "executed_branches": [], "missing_branches": []}, "_event_claim_path": {"executed_lines": [1345], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1344, "executed_branches": [], "missing_branches": []}, "_event_claim_payload": {"executed_lines": [1355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1354, "executed_branches": [], "missing_branches": []}, "_validate_event_claim_reference": {"executed_lines": [1366, 1374, 1378, 1379, 1380], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1377], "excluded_lines": [], "start_line": 1362, "executed_branches": [[1374, 1378], [1378, 1379], [1378, 1380]], "missing_branches": [[1374, 1377]]}, "_validate_event_claim": {"executed_lines": [1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1383, "executed_branches": [[1392, 1395], [1392, 1396]], "missing_branches": []}, "_recover_missing_event_claim": {"executed_lines": [1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427]], "missing_branches": []}, "_publish_event_claims": {"executed_lines": [1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1436, "executed_branches": [[1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460]], "missing_branches": []}, "_write_quarantine": {"executed_lines": [1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [1496, 1497, 1498], "excluded_lines": [], "start_line": 1463, "executed_branches": [[1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499]], "missing_branches": [[1495, 1496], [1496, 1495], [1496, 1497]]}, "_write_normalized_events_legacy": {"executed_lines": [1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761], "summary": {"covered_lines": 86, "num_statements": 98, "percent_covered": 84.55882352941177, "percent_covered_display": "85", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88", "num_branches": 38, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 9, "percent_branches_covered": 76.3157894736842, "percent_branches_covered_display": "76"}, "missing_lines": [1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751], "excluded_lines": [], "start_line": 1525, "executed_branches": [[1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757]], "missing_branches": [[1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751]]}, "write_normalized_events": {"executed_lines": [1780, 1782], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [], "missing_branches": []}, "write_normalized_batches": {"executed_lines": [1804, 1806], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [], "missing_branches": []}, "_safe_snapshot_partition": {"executed_lines": [1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1825], "excluded_lines": [], "start_line": 1817, "executed_branches": [[1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826]], "missing_branches": [[1824, 1825]]}, "_load_normalized_snapshot": {"executed_lines": [1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936], "summary": {"covered_lines": 62, "num_statements": 64, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 2, "covered_branches": 36, "missing_branches": 2, "percent_branches_covered": 94.73684210526316, "percent_branches_covered_display": "95"}, "missing_lines": [1888, 1912], "excluded_lines": [], "start_line": 1829, "executed_branches": [[1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936]], "missing_branches": [[1887, 1888], [1911, 1912]]}, "load_normalized_snapshot": {"executed_lines": [1940], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1939, "executed_branches": [], "missing_branches": []}, "read_normalized_events": {"executed_lines": [1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1943, "executed_branches": [[1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": []}, "DuckDBSnapshot.__init__": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1966, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988]], "missing_branches": []}, "DuckDBSnapshot.query": {"executed_lines": [1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1990, "executed_branches": [[1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBSnapshot.close": {"executed_lines": [2011], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2010, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__enter__": {"executed_lines": [2014], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2013, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__exit__": {"executed_lines": [2017], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2016, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.__init__": {"executed_lines": [2024], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2023, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.open_snapshot": {"executed_lines": [2027, 2028], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 316, 339, 343, 351, 362, 366, 378, 386, 396, 407, 436, 449, 475, 476, 485, 486, 513, 519, 526, 574, 596, 614, 629, 641, 653, 665, 675, 682, 697, 715, 728, 733, 763, 795, 815, 823, 858, 979, 1001, 1022, 1034, 1055, 1084, 1117, 1141, 1152, 1238, 1245, 1256, 1269, 1278, 1299, 1321, 1344, 1354, 1362, 1383, 1403, 1436, 1463, 1525, 1769, 1793, 1817, 1829, 1939, 1943, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CollectionStoppedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "StoragePolicy": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "CapacityDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "RawObjectManifest": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "RawObjectReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "RawKeyClaim": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "ArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "PartitionManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [], "missing_branches": []}, "EventClaimReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [], "missing_branches": []}, "EventClaimShardManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "EventClaimIndexManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "L2CheckpointManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "EventClaimSequence": {"executed_lines": [222, 223, 224, 227, 230, 232, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 262, 263, 264, 265, 266, 269], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.22641509433963, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [259], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": [[256, 259]]}, "NormalizedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "QuarantineEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [], "missing_branches": []}, "NormalizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2011, 2014, 2017], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1963, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBCatalog": {"executed_lines": [2024, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2020, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 992, "num_statements": 1040, "percent_covered": 93.95924308588064, "percent_covered_display": "94", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 95.38461538461539, "percent_statements_covered_display": "95", "num_branches": 334, "num_partial_branches": 31, "covered_branches": 299, "missing_branches": 35, "percent_branches_covered": 89.52095808383234, "percent_branches_covered_display": "90"}, "missing_lines": [388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "start_line": 1, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": [[387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]]}}}, "src\\quant_data_kit\\domain_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 38, "num_partial_branches": 0, "covered_branches": 38, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134], [161, 162], [161, 167], [173, 174], [173, 175], [195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": [], "functions": {"_required_text": {"executed_lines": [49, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 51]], "missing_branches": []}, "_optional_text": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "_validate_knowledge_interval": {"executed_lines": [62, 63, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [[68, 69], [68, 70]], "missing_branches": []}, "InstrumentSpec.__post_init__": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping.__post_init__": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession.__post_init__": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "dataclass_payload": {"executed_lines": [218, 219, 242, 243, 252, 253, 264], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [[218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}, "fixed_point_payload": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_time": {"executed_lines": [272], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_optional_time": {"executed_lines": [276], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 54, 58, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 267, 271, 275], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AssetClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "MarginMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "SessionPhase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "InstrumentSpec": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}}}, "src\\quant_data_kit\\exceptions.py": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"QuantDataKitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [], "missing_branches": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "ProviderError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\fixed_point.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 23, 25, 27, 29, 32, 33, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 56, 57], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]], "functions": {"FixedPoint.__post_init__": {"executed_lines": [23, 25, 27, 29], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [24, 26, 28, 30], "excluded_lines": [], "start_line": 22, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30]]}, "FixedPoint.from_decimal": {"executed_lines": [41, 42, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [43], "excluded_lines": [], "start_line": 33, "executed_branches": [[42, 44], [46, 47], [46, 48]], "missing_branches": [[42, 43]]}, "FixedPoint.to_decimal": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_positive": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_non_negative": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FixedPoint": {"executed_lines": [23, 25, 27, 29, 41, 42, 44, 45, 46, 47, 48, 51, 54, 57], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "start_line": 16, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\l2_replay.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 213, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 280, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 408, 409, 414, 415, 416, 420, 421, 422, 423, 424, 425, 426, 427, 428, 430, 431, 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, 454, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 283, "num_statements": 289, "percent_covered": 97.72151898734177, "percent_covered_display": "98", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 97.92387543252595, "percent_statements_covered_display": "98", "num_branches": 106, "num_partial_branches": 1, "covered_branches": 103, "missing_branches": 3, "percent_branches_covered": 97.16981132075472, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443], [478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": [[205, 208], [272, 273], [272, 275]], "functions": {"_canonical": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "_level": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.initialized": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.sequence": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply": {"executed_lines": [96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101]], "missing_branches": []}, "L2BookReconstructor.apply_snapshot": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_snapshot_state": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply_delta": {"executed_lines": [113, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_delta_state": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_without_checkpoint": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126], [126, 127], [126, 129]], "missing_branches": []}, "L2BookReconstructor._apply_validated_without_checkpoint": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[134, 135], [134, 137], [137, 138], [137, 140]], "missing_branches": []}, "L2BookReconstructor._apply_validated_snapshot_state": {"executed_lines": [143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [[144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160]], "missing_branches": []}, "L2BookReconstructor._apply_validated_delta_state": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [208], "excluded_lines": [], "start_line": 170, "executed_branches": [[171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206]], "missing_branches": [[205, 208]]}, "L2BookReconstructor._apply_validated_uniform_upsert_batch": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278], "summary": {"covered_lines": 22, "num_statements": 27, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 81.48148148148148, "percent_statements_covered_display": "81", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259]], "missing_branches": [[272, 273], [272, 275]]}, "L2BookReconstructor._apply_validated_atomic_delta_group": {"executed_lines": [304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 34, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390]], "missing_branches": []}, "L2BookReconstructor._assert_identity": {"executed_lines": [409, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408, "executed_branches": [[415, -408], [415, 416]], "missing_branches": []}, "L2BookReconstructor._assert_time_advances": {"executed_lines": [421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420, "executed_branches": [[421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428]], "missing_branches": []}, "L2BookReconstructor._assert_book_valid": {"executed_lines": [435, 436, 437, 438], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431, "executed_branches": [[435, 436], [435, 437], [437, -430], [437, 438]], "missing_branches": []}, "L2BookReconstructor.checkpoint": {"executed_lines": [441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443]], "missing_branches": []}, "_parsed_timestamp": {"executed_lines": [468], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [], "missing_branches": []}, "replay_l2": {"executed_lines": [477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 62, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 471], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"L2ReplayError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "ReconstructedLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "BookCheckpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "L2ReplayResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 89, 93, 96, 97, 98, 99, 100, 101, 104, 105, 108, 109, 110, 113, 114, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 409, 414, 415, 416, 421, 422, 423, 424, 425, 426, 427, 428, 435, 436, 437, 438, 441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 192, "num_statements": 198, "percent_covered": 96.89655172413794, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 92, "num_partial_branches": 1, "covered_branches": 89, "missing_branches": 3, "percent_branches_covered": 96.73913043478261, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 74, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443]], "missing_branches": [[205, 208], [272, 273], [272, 275]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}}}, "src\\quant_data_kit\\market_clock_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 16, 18, 19, 21, 22, 23, 26, 27, 29, 30, 31, 40, 41, 42, 44, 53], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]], "functions": {"MarketClock.__init__": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [17, 20], "excluded_lines": [], "start_line": 15, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21]]}, "MarketClock.session_at": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "MarketClock.trading_day_at": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "MarketClock.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "MarketClock.next_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": [[60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MarketClock": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27, 30, 31, 41, 42], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 51.515151515151516, "percent_covered_display": "52", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 14, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\market_events_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 97, 98, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 271, 272, 273, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 264, "num_statements": 265, "percent_covered": 99.45205479452055, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.62264150943396, "percent_statements_covered_display": "99", "num_branches": 100, "num_partial_branches": 1, "covered_branches": 99, "missing_branches": 1, "percent_branches_covered": 99.0, "percent_branches_covered_display": "99"}, "missing_lines": [160], "excluded_lines": [], "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84], [98, -95], [98, 103], [120, 121], [120, 122], [122, -114], [122, 123], [137, -133], [137, 138], [157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186], [198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214], [228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241], [253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298], [310, -307], [310, 311], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": [[159, 160]], "functions": {"_required_text": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[34, 35], [34, 36]], "missing_branches": []}, "_positive": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, -39], [40, 41]], "missing_branches": []}, "_non_negative": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, -44], [45, 46]], "missing_branches": []}, "_MarketEventBase.__post_init__": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel.__post_init__": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent.__post_init__": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent.__post_init__": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent.__post_init__": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 153, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent.__post_init__": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent.__post_init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent.__post_init__": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent.__post_init__": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent.__post_init__": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent.__post_init__": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "_time": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [], "missing_branches": []}, "_base_payload": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331, "executed_branches": [], "missing_branches": []}, "_level_payload": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346, "executed_branches": [], "missing_branches": []}, "market_event_payload": {"executed_lines": [355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354, "executed_branches": [[356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 39, 44, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 331, 346, 354], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AggressorSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "BookSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "BookAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [], "missing_branches": []}, "_MarketEventBase": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 142, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 147, "num_statements": 147, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}}}, "src\\quant_data_kit\\normalized_v3.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 236, 237, 238, 239, 240, 242, 243, 245, 246, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 327, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 385, 386, 387, 388, 389, 390, 391, 393, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 423, 424, 425, 426, 429, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 468, 469, 470, 471, 473, 474, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 622, 623, 624, 625, 627, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 643, 644, 645, 646, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1415, "num_statements": 1454, "percent_covered": 95.55444555444555, "percent_covered_display": "96", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 97.31774415405778, "percent_statements_covered_display": "97", "num_branches": 548, "num_partial_branches": 46, "covered_branches": 498, "missing_branches": 50, "percent_branches_covered": 90.87591240875912, "percent_branches_covered_display": "91"}, "missing_lines": [363, 419, 427, 709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [211, -208], [211, 212], [215, 216], [215, 217], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381], [401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377], [418, 419], [426, 427], [506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]], "functions": {"_native_validator": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "_validate_l2_semantics": {"executed_lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 30, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149]], "missing_branches": []}, "_validate_event_record": {"executed_lines": [153, 154, 155, 156, 157, 158, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [[157, 158], [157, 160]], "missing_branches": []}, "_cached_timestamp": {"executed_lines": [165], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "_cached_date": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "_cached_utc_text": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_cached_date_text": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_arrow_ready_rows": {"executed_lines": [184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196]], "missing_branches": []}, "_InputSpool.__init__": {"executed_lines": [203, 204, 205, 206], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "_InputSpool.append": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [[211, -208], [211, 212]], "missing_branches": []}, "_InputSpool.flush": {"executed_lines": [215, 216, 217, 218, 226, 227, 231, 232, 233, 234], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214, "executed_branches": [[215, 216], [215, 217]], "missing_branches": []}, "_InputSpool.close": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "_InputSpool.__enter__": {"executed_lines": [243], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "_InputSpool.__exit__": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [], "missing_branches": []}, "_iter_spooled_records": {"executed_lines": [250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249, "executed_branches": [[251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260]], "missing_branches": []}, "_has_non_finite": {"executed_lines": [264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [[264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270]], "missing_branches": []}, "_OpenPartition.append": {"executed_lines": [289, 294, 295, 296, 297], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288, "executed_branches": [[294, 295], [294, 296]], "missing_branches": []}, "_OpenPartition.flush": {"executed_lines": [300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301], [300, 302], [306, 307], [313, 314]], "missing_branches": [[306, 312], [313, 321]]}, "_OpenPartition.append_record_batch": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [[334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354]], "missing_branches": []}, "_OpenPartition._flush_arrow_buffer": {"executed_lines": [357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [363], "excluded_lines": [], "start_line": 356, "executed_branches": [[357, 358], [357, 359], [362, 364], [364, 365], [364, 372]], "missing_branches": [[362, 363]]}, "_OpenPartition.close": {"executed_lines": [378, 379, 380, 381, 382], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[380, 381]], "missing_branches": [[380, -377]]}, "_PartitionSet.__init__": {"executed_lines": [387, 388, 389, 390, 391], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386, "executed_branches": [], "missing_branches": []}, "_PartitionSet.append": {"executed_lines": [394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [419], "excluded_lines": [], "start_line": 393, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421]], "missing_branches": [[418, 419]]}, "_PartitionSet.flush_all": {"executed_lines": [424, 425, 426], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [427], "excluded_lines": [], "start_line": 423, "executed_branches": [[424, 425], [424, 426], [426, -423]], "missing_branches": [[426, 427]]}, "_PartitionSet.append_record_batch": {"executed_lines": [440, 445, 446, 447, 448, 452, 459, 460, 461, 462], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429, "executed_branches": [[447, 448], [447, 460], [460, 461], [460, 462]], "missing_branches": []}, "_PartitionSet.close": {"executed_lines": [469, 470, 471], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [[470, -468], [470, 471]], "missing_branches": []}, "_PartitionSet.paths": {"executed_lines": [474], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473, "executed_branches": [], "missing_branches": []}, "_partition_identity": {"executed_lines": [487], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "_streaming_stage": {"executed_lines": [497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [], "excluded_lines": [], "start_line": 496, "executed_branches": [[499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521]], "missing_branches": [[506, 499], [518, 520], [520, -495]]}, "_sql_text": {"executed_lines": [525], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [], "missing_branches": []}, "_sql_path_list": {"executed_lines": [529], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "_sql_identifier": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "_canonical_sql_value": {"executed_lines": [537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536, "executed_branches": [[537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563]], "missing_branches": []}, "_canonical_row_sql": {"executed_lines": [567, 568, 569, 575], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[568, 569], [568, 575]], "missing_branches": []}, "_canonical_event_sql": {"executed_lines": [579], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578, "executed_branches": [], "missing_branches": []}, "_sort_partition": {"executed_lines": [589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 588, "executed_branches": [[589, 590], [589, 591], [609, 610], [609, 614], [614, 615]], "missing_branches": [[614, 616]]}, "_JsonArrayDigest.__init__": {"executed_lines": [622, 623, 624, 625], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "_JsonArrayDigest.update": {"executed_lines": [628, 629, 630, 635, 636, 637, 638, 639, 640, 641], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 627, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_JsonArrayDigest.hexdigest": {"executed_lines": [644, 645, 646], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 643, "executed_branches": [], "missing_branches": []}, "_logical_rows": {"executed_lines": [650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 649, "executed_branches": [[653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662]], "missing_branches": [[657, 655], [661, 659]]}, "_contains_floating_type": {"executed_lines": [668, 669, 670, 671, 672, 673, 674], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674]], "missing_branches": []}, "_scan_partition": {"executed_lines": [681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "95", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [709, 717], "excluded_lines": [], "start_line": 677, "executed_branches": [[684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727]], "missing_branches": [[708, 709], [716, 717]]}, "_scan_partition_arrow_ipc": {"executed_lines": [733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 732, "executed_branches": [[742, 743], [742, 747], [747, 748], [747, 753]], "missing_branches": []}, "_partition_manifests": {"executed_lines": [765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [782, 790], "excluded_lines": [], "start_line": 758, "executed_branches": [[766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791]], "missing_branches": [[781, 782], [789, 790]]}, "_duplicate_event_ids": {"executed_lines": [810, 811, 812, 813, 814, 820, 822], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 809, "executed_branches": [[810, 811], [810, 812]], "missing_branches": []}, "_publish_quarantine_file": {"executed_lines": [834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [852, 873], "excluded_lines": [], "start_line": 825, "executed_branches": [[834, 835], [834, 836], [851, 853]], "missing_branches": [[851, 852]]}, "_rebuild_after_exclusions": {"executed_lines": [886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905]], "missing_branches": [[886, 888], [904, 906]]}, "_claim_database": {"executed_lines": [927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997], "summary": {"covered_lines": 25, "num_statements": 29, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.20689655172414, "percent_statements_covered_display": "86", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [991, 992, 993, 994], "excluded_lines": [], "start_line": 922, "executed_branches": [[940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997]], "missing_branches": [[990, 991], [992, 993], [992, 994]]}, "_claim_shard_manifests": {"executed_lines": [1003, 1004], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1000, "executed_branches": [], "missing_branches": []}, "_claim_multiset_manifest_sql": {"executed_lines": [1015, 1018, 1022, 1023, 1031], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1031]], "missing_branches": []}, "_export_claim_index": {"executed_lines": [1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1053, 1066], "excluded_lines": [], "start_line": 1044, "executed_branches": [[1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067]], "missing_branches": [[1052, 1053], [1065, 1066]]}, "_claim_select_sql": {"executed_lines": [1092, 1093, 1094], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_claim_file_order": {"executed_lines": [1114, 1115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1113, "executed_branches": [], "missing_branches": []}, "_claim_shard_manifests_from_paths": {"executed_lines": [1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1128], "excluded_lines": [], "start_line": 1118, "executed_branches": [[1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130]], "missing_branches": [[1127, 1128]]}, "_write_claim_index_manifest": {"executed_lines": [1158, 1165, 1176, 1177], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1151, "executed_branches": [], "missing_branches": []}, "_build_claim_index_files": {"executed_lines": [1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1197, 1218, 1242], "excluded_lines": [], "start_line": 1183, "executed_branches": [[1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256]], "missing_branches": [[1196, 1197], [1217, 1218], [1241, 1242]]}, "_claim_index_root": {"executed_lines": [1260], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1259, "executed_branches": [], "missing_branches": []}, "_claim_index_files": {"executed_lines": [1264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "_validate_claim_index": {"executed_lines": [1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 94.52054794520548, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [1275, 1327], "excluded_lines": [], "start_line": 1267, "executed_branches": [[1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332]], "missing_branches": [[1274, 1275], [1326, 1327]]}, "_publish_or_validate_claim_index": {"executed_lines": [1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1335, "executed_branches": [[1345, 1346], [1345, 1367]], "missing_branches": []}, "_snapshot_payload_v3": {"executed_lines": [1389], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1378, "executed_branches": [], "missing_branches": []}, "_index_for_snapshot": {"executed_lines": [1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1431], "excluded_lines": [], "start_line": 1404, "executed_branches": [[1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462]], "missing_branches": [[1430, 1431]]}, "iter_event_claims_v3": {"executed_lines": [1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1466, "executed_branches": [[1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498]], "missing_branches": []}, "_historical_index_paths": {"executed_lines": [1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1512, 1560], "excluded_lines": [], "start_line": 1503, "executed_branches": [[1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562]], "missing_branches": [[1511, 1512], [1559, 1560], [1561, 1563]]}, "_assert_lake_wide_claims": {"executed_lines": [1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1575, "executed_branches": [[1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599]], "missing_branches": []}, "load_normalized_snapshot_v3": {"executed_lines": [1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755], "summary": {"covered_lines": 76, "num_statements": 78, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97", "num_branches": 42, "num_partial_branches": 2, "covered_branches": 40, "missing_branches": 2, "percent_branches_covered": 95.23809523809524, "percent_branches_covered_display": "95"}, "missing_lines": [1622, 1706], "excluded_lines": [], "start_line": 1602, "executed_branches": [[1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746]], "missing_branches": [[1621, 1622], [1705, 1706]]}, "_all_duplicate_ids_from_spool": {"executed_lines": [1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1779, "executed_branches": [[1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789]], "missing_branches": []}, "_validate_stream_record": {"executed_lines": [1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [[1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837]], "missing_branches": []}, "_revalidate_streams_after_duplicate_exclusions": {"executed_lines": [1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1841, "executed_branches": [[1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882]], "missing_branches": []}, "_all_true": {"executed_lines": [1899, 1900], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1898, "executed_branches": [], "missing_branches": []}, "_require_all": {"executed_lines": [1904, 1905], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1903, "executed_branches": [[1904, -1903], [1904, 1905]], "missing_branches": []}, "_uniform_value": {"executed_lines": [1909, 1910, 1911, 1912, 1913, 1914], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1908, "executed_branches": [[1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914]], "missing_branches": []}, "_validate_fixed_point_array": {"executed_lines": [1918, 1919, 1920, 1921, 1922, 1925], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1917, "executed_branches": [[1920, 1921], [1920, 1922]], "missing_branches": []}, "_validate_common_arrow_batch": {"executed_lines": [1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [1938, 1939, 1998], "excluded_lines": [], "start_line": 1931, "executed_branches": [[1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999]], "missing_branches": [[1997, 1998]]}, "_logical_batch_rows": {"executed_lines": [2009], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2008, "executed_branches": [], "missing_branches": []}, "_sort_keys": {"executed_lines": [2013, 2021, 2022, 2023], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2012, "executed_branches": [[2021, 2022], [2021, 2023]], "missing_branches": []}, "_validate_l2_delta_columns": {"executed_lines": [2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "_encoded_l2_group_ranges": {"executed_lines": [2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2067, "executed_branches": [[2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088]], "missing_branches": []}, "_try_apply_atomic_l2_delta_batch": {"executed_lines": [2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 94.20289855072464, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [2137, 2178], "excluded_lines": [], "start_line": 2096, "executed_branches": [[2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174]], "missing_branches": [[2136, 2137], [2173, 2178]]}, "_try_apply_uniform_l2_delta_batch": {"executed_lines": [2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [2241, 2264], "excluded_lines": [], "start_line": 2195, "executed_branches": [[2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268]], "missing_branches": [[2240, 2241], [2263, 2264]]}, "_validate_record_batch": {"executed_lines": [2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2282, "executed_branches": [[2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326]], "missing_branches": []}, "_iter_record_batches": {"executed_lines": [2332, 2333, 2334, 2335, 2336, 2337], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2329, "executed_branches": [[2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337]], "missing_branches": []}, "_l2_group_key": {"executed_lines": [2341, 2342, 2343], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2340, "executed_branches": [], "missing_branches": []}, "_concat_record_batches": {"executed_lines": [2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2351, "executed_branches": [[2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359]], "missing_branches": []}, "_iter_atomic_l2_record_batches": {"executed_lines": [2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 98.03921568627452, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 2368, "executed_branches": [[2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415]], "missing_branches": [[2408, 2410]]}, "_finalize_strict_batch_snapshot": {"executed_lines": [2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 97.77777777777777, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 2418, "executed_branches": [[2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528]], "missing_branches": [[2527, 2529]]}, "write_normalized_batches_v3": {"executed_lines": [2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647], "summary": {"covered_lines": 48, "num_statements": 49, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.95918367346938, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [2646], "excluded_lines": [], "start_line": 2543, "executed_branches": [[2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647]], "missing_branches": [[2645, 2646]]}, "write_normalized_events_v3": {"executed_lines": [2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 110, "num_statements": 115, "percent_covered": 93.08176100628931, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96", "num_branches": 44, "num_partial_branches": 4, "covered_branches": 38, "missing_branches": 6, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}, "missing_lines": [2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 2662, "executed_branches": [[2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 107, 152, 163, 164, 168, 169, 173, 174, 178, 179, 183, 201, 202, 208, 214, 236, 242, 245, 249, 263, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 495, 496, 524, 528, 532, 536, 566, 578, 588, 620, 621, 627, 643, 649, 667, 677, 732, 758, 809, 825, 876, 922, 1000, 1014, 1044, 1091, 1113, 1118, 1151, 1183, 1259, 1263, 1267, 1335, 1378, 1404, 1466, 1503, 1575, 1602, 1779, 1793, 1841, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1903, 1908, 1917, 1931, 2008, 2012, 2026, 2067, 2096, 2195, 2282, 2329, 2340, 2351, 2368, 2418, 2543, 2662], "summary": {"covered_lines": 158, "num_statements": 158, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"_ClaimIndexMissingError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "_InputSpool": {"executed_lines": [203, 204, 205, 206, 209, 210, 211, 212, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 237, 238, 239, 240, 243, 246], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[211, -208], [211, 212], [215, 216], [215, 217]], "missing_branches": []}, "_OpenPartition": {"executed_lines": [289, 294, 295, 296, 297, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 378, 379, 380, 381, 382], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 94.25287356321839, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [363], "excluded_lines": [], "start_line": 274, "executed_branches": [[294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377]]}, "_PartitionSet": {"executed_lines": [387, 388, 389, 390, 391, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 424, 425, 426, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 469, 470, 471, 474], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [419, 427], "excluded_lines": [], "start_line": 385, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471]], "missing_branches": [[418, 419], [426, 427]]}, "_JsonArrayDigest": {"executed_lines": [622, 623, 624, 625, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 644, 645, 646], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_ArrowBatchIdentity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1890, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 208, 214, 236, 242, 245, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 627, 643, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1280, "num_statements": 1316, "percent_covered": 95.57522123893806, "percent_covered_display": "96", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 97.26443768996961, "percent_statements_covered_display": "97", "num_branches": 492, "num_partial_branches": 40, "covered_branches": 448, "missing_branches": 44, "percent_branches_covered": 91.0569105691057, "percent_branches_covered_display": "91"}, "missing_lines": [709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 1, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}}}, "src\\quant_data_kit\\panel.py": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]], "functions": {"merge_earnings_to_panel": {"executed_lines": [10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [11, 12, 13, 27, 28], "excluded_lines": [], "start_line": 8, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30]], "missing_branches": [[10, 11], [26, 27]]}, "merge_northbound_to_panel": {"executed_lines": [44, 49, 54], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45, 46, 47], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 49]], "missing_branches": [[44, 45]]}, "add_industry_relative_strength": {"executed_lines": [64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [65, 66, 67], "excluded_lines": [], "start_line": 57, "executed_branches": [[64, 69]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 8, 43, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]]}}}, "src\\quant_data_kit\\process_lock.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": [], "functions": {"_acquire_windows_lock": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [[29, 30], [29, 31]], "missing_branches": []}, "_release_windows_lock": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "_acquire_posix_lock": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "_release_posix_lock": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "_windows_file_lock": {"executed_lines": [73, 75, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_posix_file_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_platform_lock_backend": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "process_file_lock": {"executed_lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 34, 43, 62, 71, 72, 93, 94, 114, 120, 126, 127], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\_fetch.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]], "functions": {"fetch_with_retries": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26], "excluded_lines": [], "start_line": 12, "executed_branches": [[20, 21]], "missing_branches": [[20, 26]]}, "fetch_symbols_parallel": {"executed_lines": [37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 55.0, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 29, "executed_branches": [[38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[38, 42], [44, 45], [44, 47], [47, 48]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]]}}}, "src\\quant_data_kit\\providers\\_network.py": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "executed_branches": [], "missing_branches": [[11, -6], [11, 12]], "functions": {"configure_network": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}, "": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}}}, "src\\quant_data_kit\\providers\\_symbols.py": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": [[12, 13], [12, 14]], "functions": {"normalize_symbol": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "to_market_symbol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}, "": {"executed_lines": [3, 6, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}}}, "src\\quant_data_kit\\providers\\akshare.py": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\benchmark.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [[26, 27], [26, 29]], "functions": {"fetch_hs300_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}}}, "src\\quant_data_kit\\providers\\earnings_forecast.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]], "functions": {"_score_forecast_type": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44], [44, 45]], "missing_branches": [[43, 46], [44, 43]]}, "_quarter_end_dates": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[53, 54], [53, 58], [54, 53], [54, 55], [56, 57]], "missing_branches": [[56, 54]]}, "fetch_earnings_forecasts": {"executed_lines": [68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 20, "num_statements": 33, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 60.60606060606061, "percent_statements_covered_display": "61", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 6, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 61, "executed_branches": [[69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 49, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}}}, "src\\quant_data_kit\\providers\\fundamentals.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]], "functions": {"_fetch_one_fundamental": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}, "fetch_fundamentals": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76, 77, 79, 87], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "fetch_fundamentals._task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}}}, "src\\quant_data_kit\\providers\\industry.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]], "functions": {"fetch_industry_returns": {"executed_lines": [27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 14, "num_statements": 27, "percent_covered": 51.42857142857143, "percent_covered_display": "51", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 51.851851851851855, "percent_statements_covered_display": "52", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}}}, "src\\quant_data_kit\\providers\\northbound.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]], "functions": {"_fetch_one_northbound": {"executed_lines": [25, 26, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 8, "num_statements": 24, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60], "excluded_lines": [], "start_line": 20, "executed_branches": [[25, 26]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53]]}, "fetch_northbound_holdings": {"executed_lines": [77, 79, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 71, "executed_branches": [[86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[86, 90], [92, 93], [92, 95], [96, 97]]}, "fetch_northbound_holdings._task": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [82, 83, 84], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 71], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]]}}}, "src\\quant_data_kit\\providers\\prices.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]], "functions": {"_fetch_one_price": {"executed_lines": [37, 38, 76, 77, 78, 79], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 30, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}, "fetch_daily_prices": {"executed_lines": [91, 92, 94, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "fetch_daily_prices._task": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 82], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}}}, "src\\quant_data_kit\\providers\\universe.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]], "functions": {"fetch_hs300_constituents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": [[21, 22], [21, 24]]}, "fetch_hs300_constituents_history": {"executed_lines": [41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 20, "num_statements": 75, "percent_covered": 24.031007751937985, "percent_covered_display": "24", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 26.666666666666668, "percent_statements_covered_display": "27", "num_branches": 54, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 43, "percent_branches_covered": 20.37037037037037, "percent_branches_covered_display": "20"}, "missing_lines": [44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 33, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}}}, "src\\quant_data_kit\\schemas_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]], "functions": {"_field": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_object_schema": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_event_schema": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "_timestamp": {"executed_lines": [394, 395, 397], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [396], "excluded_lines": [], "start_line": 393, "executed_branches": [[395, 397]], "missing_branches": [[395, 396]]}, "_fixed_value": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400, "executed_branches": [], "missing_branches": []}, "_require_positive": {"executed_lines": [406, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405, "executed_branches": [[407, 408], [407, 409]], "missing_branches": []}, "_require_non_negative": {"executed_lines": [413, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412, "executed_branches": [[414, 415], [414, 416]], "missing_branches": []}, "_validate_event_semantics": {"executed_lines": [420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500], "summary": {"covered_lines": 78, "num_statements": 80, "percent_covered": 96.57534246575342, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.5, "percent_statements_covered_display": "98", "num_branches": 66, "num_partial_branches": 3, "covered_branches": 63, "missing_branches": 3, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [426, 468], "excluded_lines": [], "start_line": 419, "executed_branches": [[423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500]], "missing_branches": [[425, 426], [467, 468], [499, -419]]}, "_validate_record_semantics": {"executed_lines": [504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525]], "missing_branches": [[524, -503]]}, "_validate_knowledge_interval": {"executed_lines": [529, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [[529, -528], [529, 532]], "missing_branches": []}, "get_arrow_schema": {"executed_lines": [536, 537, 538, 539, 540, 541], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 538]], "missing_branches": []}, "get_json_schema": {"executed_lines": [545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546], [545, 547]], "missing_branches": []}, "_compiled_json_validator": {"executed_lines": [558, 559, 560, 561, 564], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 554, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "validate_json_record": {"executed_lines": [572, 573, 574, 575, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "validate_event_stream": {"executed_lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [[587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623]], "missing_branches": []}, "validate_arrow_table": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[632, -626], [632, 633]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 52, 64, 69, 187, 196, 206, 207, 208, 211, 221, 234, 290, 297, 380, 393, 400, 405, 412, 419, 503, 528, 535, 544, 553, 554, 567, 580, 626], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "start_line": 1, "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]]}}}, "src\\quant_data_kit\\snapshots.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]], "functions": {"_canonical_frame_bytes": {"executed_lines": [37, 38, 39, 40, 43], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[39, 40]], "missing_branches": [[39, 43]]}, "frame_sha256": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "schema_sha256": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "create_snapshot": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [71, 96, 99], "excluded_lines": [], "start_line": 56, "executed_branches": [[70, 72], [94, 95], [94, 101], [95, 97], [98, 100]], "missing_branches": [[70, 71], [95, 96], [98, 99]]}, "load_snapshot": {"executed_lines": [110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [114], "excluded_lines": [], "start_line": 109, "executed_branches": [[113, 115], [116, 117], [116, 118]], "missing_branches": [[113, 114]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 46, 50, 56, 109], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]]}}}, "src\\quant_data_kit\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]], "functions": {"save_parquet": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "load_parquet": {"executed_lines": [38, 39, 41], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [40], "excluded_lines": [], "start_line": 37, "executed_branches": [[39, 41]], "missing_branches": [[39, 40]]}, "_date_bounds": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, 47]], "missing_branches": [[45, 46]]}, "build_manifest": {"executed_lines": [62, 63, 64, 67, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "write_manifest": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "save_manifest": {"executed_lines": [107, 108, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "load_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [124, 125, 126], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "parse_date": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "cache_covers_range": {"executed_lines": [140, 142, 143, 144, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [141], "excluded_lines": [], "start_line": 133, "executed_branches": [[140, 142]], "missing_branches": [[140, 141]]}, "should_refresh_cache": {"executed_lines": [155, 156, 158, 159], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 158]], "missing_branches": [[156, 157]]}, "incremental_start_date": {"executed_lines": [163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [168], "excluded_lines": [], "start_line": 162, "executed_branches": [[164, 165], [164, 166], [167, 169]], "missing_branches": [[167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44, 51, 87, 95, 123, 129, 133, 148, 162], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DataManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]]}}}, "src\\quant_data_kit\\temporal.py": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]], "functions": {"_normalize_times": {"executed_lines": [28, 29, 30, 32, 33, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [31, 34], "excluded_lines": [], "start_line": 27, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29]], "missing_branches": [[30, 31], [33, 34]]}, "point_in_time_join": {"executed_lines": [55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 69.38775510204081, "percent_covered_display": "69", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [56, 60, 72, 86, 87, 88, 89, 104], "excluded_lines": [], "start_line": 38, "executed_branches": [[55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105]], "missing_branches": [[55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104]]}, "audit_point_in_time": {"executed_lines": [115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [117, 127, 128, 129], "excluded_lines": [], "start_line": 108, "executed_branches": [[116, 118], [121, 122], [121, 123], [126, 130]], "missing_branches": [[116, 117], [126, 127]]}, "apply_symbol_lifecycle": {"executed_lines": [149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [150, 154], "excluded_lines": [], "start_line": 139, "executed_branches": [[149, 151], [153, 155]], "missing_branches": [[149, 150], [153, 154]]}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 38, 108, 139], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]]}}}, "src\\quant_data_kit\\temporal_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]], "functions": {"ensure_utc_datetime": {"executed_lines": [18, 19, 21, 22, 23, 24, 27, 28, 29], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [20, 25, 26], "excluded_lines": [], "start_line": 16, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29]]}, "_utc_series": {"executed_lines": [33, 35, 36, 37, 38, 39, 40, 42, 43], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [34, 41], "excluded_lines": [], "start_line": 32, "executed_branches": [[33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39]], "missing_branches": [[33, 34], [38, 41]]}, "validate_bitemporal_frame": {"executed_lines": [62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105], "summary": {"covered_lines": 21, "num_statements": 33, "percent_covered": 61.224489795918366, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104], "excluded_lines": [], "start_line": 52, "executed_branches": [[63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105]], "missing_branches": [[63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104]]}, "point_in_time_join_bitemporal": {"executed_lines": [122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 38, "num_statements": 42, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [123, 127, 155, 168], "excluded_lines": [], "start_line": 108, "executed_branches": [[122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[122, 123], [126, 127], [154, 155], [167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 32, 46, 47, 48, 49, 52, 108], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BitemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 92, "num_statements": 113, "percent_covered": 76.3975155279503, "percent_covered_display": "76", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 81.41592920353982, "percent_statements_covered_display": "81", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 31, "missing_branches": 17, "percent_branches_covered": 64.58333333333333, "percent_branches_covered_display": "65"}, "missing_lines": [20, 25, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 27], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [24, 25], [25, 26], [25, 29], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]]}}}, "src\\quant_data_kit\\validate.py": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]], "functions": {"validate_price_frame": {"executed_lines": [21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57], "summary": {"covered_lines": 18, "num_statements": 25, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72", "num_branches": 18, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55], "excluded_lines": [], "start_line": 14, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55]]}, "validate_calendar_coverage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}, "": {"executed_lines": [3, 5, 7, 9, 11, 14, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 1, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}}}, "tests\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_adapters_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": [], "functions": {"load_messages": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "binance_adapter": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "okx_adapter": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cn_adapter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "test_crypto_fixture_adapters_cover_required_events_and_replay_l2": {"executed_lines": [111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "test_binance_and_okx_map_to_same_stable_instrument_ids": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_crypto_fixtures_enter_normalized_layer_without_quarantine": {"executed_lines": [155, 159, 160, 169, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154, "executed_branches": [[155, -154], [155, 159]], "missing_branches": []}, "test_domestic_neutral_fixture_is_explicitly_not_market_data_certified": {"executed_lines": [183, 184, 185, 186, 190, 191, 192, 193], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "test_domestic_neutral_adapter_rejects_market_certification_claim": {"executed_lines": [200, 201, 202, 203], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_provider_sequence_gap_is_rejected_before_v2_emission": {"executed_lines": [207, 208, 209, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_binance_update_range_and_okx_trade_side_are_strict": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_failure": {"executed_lines": [225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224, "executed_branches": [], "missing_branches": []}, "test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract": {"executed_lines": [264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot": {"executed_lines": [292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_fixture_index_hashes_are_exact": {"executed_lines": [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[331, -322], [331, 332]], "missing_branches": []}, "test_adapter_context_time_and_sequence_primitives_fail_closed": {"executed_lines": [337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [], "missing_branches": []}, "test_adapter_constructors_and_unknown_message_kinds_are_strict": {"executed_lines": [404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 45, 60, 75, 88, 105, 141, 154, 182, 199, 206, 213, 224, 241, 263, 291, 322, 336, 403], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": []}}}, "tests\\test_benchmark_capture_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 171, 172, 174, 175, 176, 177, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[176, 177], [176, 179]], "missing_branches": [], "functions": {"test_dense_burst_fixture_has_frozen_depth_and_expected_row_density": {"executed_lines": [28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_sparse_fixture_is_retained_and_fixture_guards_fail_closed": {"executed_lines": [61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts": {"executed_lines": [81, 82, 83, 85, 89, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts.accepted": {"executed_lines": [90, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches": {"executed_lines": [122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor.submit": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures": {"executed_lines": [169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.__init__": {"executed_lines": [171, 172], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.submit": {"executed_lines": [175, 176, 177, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "test_benchmark_timing_excludes_only_post_report_worker_teardown": {"executed_lines": [206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 60, 78, 119, 168, 205], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate": {"executed_lines": [171, 172, 175, 176, 177, 179, 180], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 133, "num_statements": 133, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_benchmark_normalized_l2.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[14, -10], [14, 15]], "missing_branches": [], "functions": {"test_synthetic_l2_fixture_is_sequential_and_schema_valid": {"executed_lines": [11, 12, 13, 14, 15, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}, "test_small_benchmark_proves_end_to_end_determinism": {"executed_lines": [24, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}}}, "tests\\test_capture_v2_collector_cli_transport.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 114, 115, 116, 119, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 523, 525, 526, 527, 529, 530, 531, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 640, 642, 643, 645, 646, 648, 649, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 671, 673, 674, 675, 678, 681, 682, 683, 684, 685, 687, 688, 690, 691, 692, 694, 695, 697, 699, 700, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 361, "num_statements": 364, "percent_covered": 98.67724867724868, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.17582417582418, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [86, 693, 696], "excluded_lines": [], "executed_branches": [[85, 87], [133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511], [692, 694], [694, 695], [694, 697]], "missing_branches": [[85, 86], [692, 693]], "functions": {"FakeClock.__init__": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [64, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [69, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "FakeConnection.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "FakeConnection.send": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "FakeConnection.receive": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 83, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnection.close": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "FakeConnector.__init__": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "FakeConnector.connect": {"executed_lines": [101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "FailedConnector.__init__": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "FailedConnector.connect": {"executed_lines": [115, 116], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "FakeHttp.__init__": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "FakeHttp.get": {"executed_lines": [124, 125, 126, 129], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "messages_for": {"executed_lines": [133, 134, 135, 136, 146, 147, 148, 149, 150], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148]], "missing_branches": []}, "roots": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "distinct_identity": {"executed_lines": [203, 204], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "storage_guard": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [], "missing_branches": []}, "config": {"executed_lines": [220, 221, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_full_eight_stream_bounded_probe_archives_and_normalizes": {"executed_lines": [243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "test_preflight_same_physical_volume_pauses_without_network": {"executed_lines": [301, 302, 303, 304, 305, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [], "missing_branches": []}, "test_connect_failures_use_bounded_retry_and_end_paused": {"executed_lines": [327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted": {"executed_lines": [363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive.archive_segment": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight": {"executed_lines": [402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398, "executed_branches": [], "missing_branches": []}, "test_cli_run_requires_confirmation_and_probe_bound": {"executed_lines": [438, 439, 440, 451, 452, 453, 454], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes": {"executed_lines": [460, 462, 463, 471, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[495, 496], [495, 511]], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.write": {"executed_lines": [472, 473, 474], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.__init__": {"executed_lines": [523], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.preflight_only": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.run": {"executed_lines": [530, 531], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "test_runner_fail_closed_internal_guards_and_raw_metadata": {"executed_lines": [544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage": {"executed_lines": [594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive.archive_segment": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors": {"executed_lines": [632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 631, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__enter__": {"executed_lines": [640], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 639, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__exit__": {"executed_lines": [643], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 642, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.read": {"executed_lines": [646], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 645, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.geturl": {"executed_lines": [649], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 648, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.failed": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse.geturl": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls": {"executed_lines": [681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 721, 722, 724, 727, 728, 729], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.__init__": {"executed_lines": [683, 684, 685], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.send": {"executed_lines": [688], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 687, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.recv": {"executed_lines": [691, 692, 694, 695, 697], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 690, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.close": {"executed_lines": [700], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 699, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connected": {"executed_lines": [719], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connection_failure": {"executed_lines": [725], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 194, 202, 207, 219, 242, 300, 326, 362, 398, 437, 457, 543, 591, 631, 678], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [60, 61, 64, 65, 66, 69, 70], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "FakeConnection": {"executed_lines": [75, 76, 77, 78, 81, 84, 85, 87, 90], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 73, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnector": {"executed_lines": [95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "FailedConnector": {"executed_lines": [112, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "FakeHttp": {"executed_lines": [121, 124, 125, 126, 129], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator": {"executed_lines": [523, 526, 527, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response": {"executed_lines": [640, 643, 646, 649], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.BadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 669, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying": {"executed_lines": [683, 684, 685, 688, 691, 692, 694, 695, 697, 700], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 681, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675, 678, 681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 304, "num_statements": 304, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511]], "missing_branches": []}}}, "tests\\test_capture_v2_models_storage.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 56, 57, 59, 60, 61, 62, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 606, 608, 609, 610, 612, 613, 614, 615, 616, 618, 619, 620, 622, 623, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 365, "num_statements": 367, "percent_covered": 99.46949602122015, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.4550408719346, "percent_statements_covered_display": "99", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": [], "functions": {"FakeClock.__init__": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "identities": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "guard": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "raw_frame": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "storage_roots": {"executed_lines": [112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "test_default_scope_is_exact_sorted_and_credential_free": {"executed_lines": [122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_scope_config_stream_and_retry_guards": {"executed_lines": [147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184]], "missing_branches": []}, "test_symbol_mapping_resolution_is_effective_and_point_in_time": {"executed_lines": [201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "test_raw_frame_round_trip_and_monotonic_clock": {"executed_lines": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure": {"executed_lines": [265, 266, 267, 268, 270, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 304, 312, 313, 314, 315, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.persist": {"executed_lines": [271, 272], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.failed_sink": {"executed_lines": [299, 300, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [[300, 301], [300, 302]], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths": {"executed_lines": [322, 323, 324, 325, 327, 332, 334, 335, 337, 340, 341, 343, 346, 347, 349, 352, 353, 356, 357], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.low_archive": {"executed_lines": [338], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_identity": {"executed_lines": [344], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_capacity": {"executed_lines": [350], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_segment_rotation_restore_and_no_cleanup": {"executed_lines": [361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360, "executed_branches": [], "missing_branches": []}, "test_segment_time_rotation_identity_order_and_capacity_fail_closed": {"executed_lines": [404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause": {"executed_lines": [445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 480, 481, 482, 483], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause.wrong_restore_hash": {"executed_lines": [476, 477, 478], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475, "executed_branches": [[476, 477], [476, 478]], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths": {"executed_lines": [489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 544, 545, 546, 547], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths.link_failed": {"executed_lines": [542], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed": {"executed_lines": [553, 555, 556, 557, 558, 560, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed.wrong_preflight_hash": {"executed_lines": [561, 562, 563], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 560, "executed_branches": [[561, 562], [561, 563]], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed": {"executed_lines": [597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 632, 633, 639, 640, 642, 648, 649, 651, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.__init__": {"executed_lines": [606], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.resolve": {"executed_lines": [609, 610], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 608, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__init__": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__call__": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.kernel": {"executed_lines": [626], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response": {"executed_lines": [652, 666], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 651, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response.respond": {"executed_lines": [662, 663, 664], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 74, 86, 111, 121, 146, 200, 233, 264, 319, 360, 403, 442, 486, 550, 594], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [56, 57, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath": {"executed_lines": [606, 609, 610], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub": {"executed_lines": [620, 623], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 355, "num_statements": 355, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": []}}}, "tests\\test_capture_v2_remediation.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 107, 108, 111, 112, 113, 114, 115, 118, 121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 153, 154, 156, 157, 158, 160, 161, 162, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 207, 208, 209, 211, 213, 214, 216, 217, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264, 267, 268, 271, 274, 276, 280, 289, 290, 293, 296, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354, 365, 368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394, 397, 398, 399, 400, 403, 413, 414, 422, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 449, 452, 453, 454, 455, 460, 461, 472, 473, 474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536, 539, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 560, 561, 562, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 595, 598, 599, 600, 602, 604, 605, 606, 607, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 631, 632, 633, 635, 636, 639, 640, 641, 644, 645, 646, 647, 663, 664, 665, 668, 669, 670, 671, 672, 674, 675, 676, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 705, 708, 709, 711, 712, 713, 714, 715, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751, 754, 755, 756, 757, 758, 764, 766, 767, 768, 769, 774, 775, 776, 777, 779, 792, 793, 794, 795, 796, 799, 800, 801, 806, 807, 813, 815, 816, 818, 819, 820, 821, 822, 823, 826, 828, 829, 830, 832, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 864, 867, 868, 869, 876, 877, 878, 879, 881, 882, 883, 885, 886, 889, 890, 892, 894, 904, 905, 906, 907, 908, 909, 910, 911, 914, 917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945, 948, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 980, 981, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1022, 1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1091, 1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1158, 1159, 1160, 1161, 1162, 1168, 1169, 1184, 1187, 1188, 1189, 1196, 1197, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221, 1224, 1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311, 1314, 1317, 1318, 1319, 1320, 1321, 1328, 1329, 1330, 1331, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1362, 1363, 1365, 1374, 1375, 1376, 1377, 1378, 1379, 1381, 1382, 1383, 1384, 1385, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1411, 1412, 1413, 1416, 1423, 1426, 1427, 1428, 1435, 1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450, 1457, 1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483, 1498, 1508, 1511, 1512, 1513, 1516, 1521, 1522, 1530, 1533, 1534, 1535, 1538, 1543, 1557, 1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574, 1582, 1585, 1586, 1587, 1594, 1595, 1596, 1597, 1604, 1605, 1606, 1607, 1616, 1617, 1618, 1626, 1640, 1643, 1644, 1645, 1646, 1647, 1656, 1657, 1665, 1689, 1692, 1693, 1694, 1695, 1696, 1697, 1706, 1707, 1715, 1736, 1739, 1740, 1741, 1742, 1751, 1752, 1753, 1754, 1763, 1764, 1772, 1787, 1790, 1791, 1792, 1793, 1802, 1803, 1811, 1814, 1815, 1816, 1817, 1827, 1828, 1829, 1830, 1840, 1841, 1842, 1843, 1853, 1854, 1855, 1856, 1857, 1858, 1863, 1864, 1865, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1891, 1892, 1899, 1900, 1901, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1921, 1922, 1923, 1926, 1927, 1928, 1929, 1932, 1933, 1934, 1935, 1936, 1937, 1948, 1951, 1952, 1953, 1954, 1955, 1965, 1966, 1967, 1968, 1978, 1979, 1980, 1981, 1982, 1992, 1993, 1994, 1995, 2005, 2006, 2007, 2008, 2019, 2022, 2023, 2025, 2026, 2027, 2028, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2044, 2047, 2048, 2049, 2050, 2059, 2060, 2065, 2066, 2067, 2068, 2069, 2070, 2073, 2074, 2075, 2076, 2077, 2078, 2080, 2081, 2083, 2084, 2085, 2087, 2088, 2089, 2090, 2091, 2093, 2102, 2103, 2104, 2105, 2106, 2108, 2109, 2118, 2119, 2120, 2122, 2123, 2124, 2126, 2127, 2129, 2130, 2131, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2144, 2145, 2146, 2147, 2149, 2151, 2152, 2153, 2155, 2156, 2157, 2158, 2161, 2164, 2165, 2174, 2176, 2177, 2179, 2180, 2183, 2184, 2185, 2187, 2188, 2189, 2190, 2191, 2192, 2194, 2195, 2196, 2197, 2198], "summary": {"covered_lines": 969, "num_statements": 996, "percent_covered": 97.09864603481624, "percent_covered_display": "97", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 97.28915662650603, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 3, "covered_branches": 35, "missing_branches": 3, "percent_branches_covered": 92.10526315789474, "percent_branches_covered_display": "92"}, "missing_lines": [55, 56, 57, 58, 59, 61, 65, 67, 68, 69, 71, 74, 75, 109, 189, 190, 277, 278, 487, 525, 526, 824, 887, 982, 1207, 1264, 2181], "excluded_lines": [], "executed_branches": [[100, 101], [100, 104], [107, 108], [193, 194], [193, 195], [303, 304], [303, 305], [486, 488], [560, 561], [560, 562], [604, 605], [604, 607], [631, 632], [631, 633], [663, -644], [663, 664], [693, 694], [693, 695], [696, 697], [696, 699], [713, 714], [713, 715], [820, 821], [820, 822], [878, 879], [878, 881], [980, 981], [1329, 1330], [1329, 1331], [1879, 1880], [1879, 1881], [2027, -2025], [2027, 2028], [2089, 2090], [2089, 2091]], "missing_branches": [[107, 109], [486, 487], [980, 982]], "functions": {"_process_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_process_crash_after_epoch_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 67, 71, 74, 75], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_process_crash_after_epoch_snapshot.terminate_after_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [68, 69], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads": {"executed_lines": [79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 111, 112, 113, 114, 115], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [[100, 101], [100, 104]], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads.fail_after_initial": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [109], "excluded_lines": [], "start_line": 106, "executed_branches": [[107, 108]], "missing_branches": [[107, 109]]}, "test_illegal_transition_is_durable_and_failed_illegal_audit_is_not_counted": {"executed_lines": [121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes": {"executed_lines": [153, 154, 156, 160, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150, "executed_branches": [[193, 194], [193, 195]], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.capacity": {"executed_lines": [157, 158], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.tree": {"executed_lines": [161, 162], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.counted_fsync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [189, 190], "excluded_lines": [], "start_line": 188, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches": {"executed_lines": [207, 208, 209, 211, 216, 217, 226, 227, 228, 229, 230], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches.counted": {"executed_lines": [213, 214], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_journal_with_lineage": {"executed_lines": [234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "_identity_anchor": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_existing_epoch_storage": {"executed_lines": [274, 276, 280, 289, 290], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_existing_epoch_storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [277, 278], "excluded_lines": [], "start_line": 276, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries": {"executed_lines": [296, 297, 298, 300, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries.fail_once": {"executed_lines": [302, 303, 304, 305], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [[303, 304], [303, 305]], "missing_branches": []}, "test_normalized_crash_after_publish_reconciles_prepared_transaction": {"executed_lines": [321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320, "executed_branches": [], "missing_branches": []}, "test_reconciliation_binds_aborts_to_their_prepared_attempt": {"executed_lines": [368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [], "missing_branches": []}, "test_reconciliation_rejects_conflicting_terminal_states": {"executed_lines": [398, 399, 400, 403, 413, 414], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [], "missing_branches": []}, "test_pending_transaction_rejects_mutation_and_malformed_time": {"executed_lines": [425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_reparse_journal_parent": {"executed_lines": [452, 453, 454, 455, 460, 461], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [], "missing_branches": []}, "test_epoch_creation_rejects_real_windows_junction": {"executed_lines": [474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [487], "excluded_lines": [], "start_line": 473, "executed_branches": [[486, 488]], "missing_branches": [[486, 487]]}, "test_bootstrap_lock_rejects_real_windows_junction_before_lock_open": {"executed_lines": [508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 505, "executed_branches": [], "missing_branches": []}, "test_bootstrap_lock_rejects_real_windows_junction_before_lock_open.must_not_open_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [525, 526], "excluded_lines": [], "start_line": 523, "executed_branches": [], "missing_branches": []}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed": {"executed_lines": [542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 539, "executed_branches": [], "missing_branches": []}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed.fail_after_open": {"executed_lines": [560, 561, 562], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 559, "executed_branches": [[560, 561], [560, 562]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery": {"executed_lines": [598, 599, 600, 602, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 635, 636, 639, 640, 641], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 595, "executed_branches": [], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.receipt_fails_once": {"executed_lines": [604, 605, 606, 607], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [[604, 605], [604, 607]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.failure_record_fails": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[631, 632], [631, 633]], "missing_branches": []}, "test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains": {"executed_lines": [645, 646, 647, 663, 664, 665], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [[663, -644], [663, 664]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe": {"executed_lines": [669, 670, 671, 672, 674, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668, "executed_branches": [[693, 694], [693, 695], [696, 697], [696, 699]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe.publish_same": {"executed_lines": [675, 676], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 674, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent": {"executed_lines": [708, 709, 711, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent.identity": {"executed_lines": [712, 713, 714, 715], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 711, "executed_branches": [[713, 714], [713, 715]], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot": {"executed_lines": [755, 756, 757, 758, 764, 766, 767, 774, 775, 779, 792, 793, 794, 795, 796], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 754, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection.__init__": {"executed_lines": [768, 769], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 767, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector.connect": {"executed_lines": [776, 777], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 775, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused": {"executed_lines": [800, 801, 806, 807, 813, 815, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 799, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise": {"executed_lines": [816, 818, 819, 826, 828, 829, 832, 845, 846, 847, 848, 849, 850], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection.receive": {"executed_lines": [820, 821, 822, 823], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [824], "excluded_lines": [], "start_line": 819, "executed_branches": [[820, 821], [820, 822]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector.connect": {"executed_lines": [830], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures": {"executed_lines": [867, 868, 869, 876, 877, 894, 904, 905, 906, 907, 908, 909, 910, 911], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 864, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect": {"executed_lines": [878, 879, 881, 882, 885, 889, 892], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 877, "executed_branches": [[878, 879], [878, 881]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.send": {"executed_lines": [883], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 882, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.receive": {"executed_lines": [886], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [887], "excluded_lines": [], "start_line": 885, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.close": {"executed_lines": [890], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 889, "executed_branches": [], "missing_branches": []}, "test_preflight_report_uses_honest_zero_audit_and_report_publish_fails_closed": {"executed_lines": [917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 914, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches": {"executed_lines": [951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 948, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches.wrong_staging_hash": {"executed_lines": [980, 981], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [982], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981]], "missing_branches": [[980, 982]]}, "test_storage_ack_reload_identity_and_restore_parent_fail_closed": {"executed_lines": [1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_and_abort_negative_branches": {"executed_lines": [1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_runner_for_negative_test": {"executed_lines": [1159, 1160, 1161, 1162, 1168, 1169], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1158, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails": {"executed_lines": [1187, 1188, 1189, 1196, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1184, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.fail_reconciliation": {"executed_lines": [1197], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1196, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1207], "excluded_lines": [], "start_line": 1206, "executed_branches": [], "missing_branches": []}, "test_coordinator_reports_reconciled_epoch_before_network": {"executed_lines": [1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1224, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1256, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1264], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "test_runner_audit_failure_and_coordinator_run_preflight_failure": {"executed_lines": [1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1282, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight": {"executed_lines": [1317, 1318, 1319, 1320, 1321, 1328, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1365, 1374, 1381, 1382, 1383, 1384, 1385, 1386], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1314, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.unhandled": {"executed_lines": [1329, 1330, 1331], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1328, "executed_branches": [[1329, 1330], [1329, 1331]], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector.connect": {"executed_lines": [1362, 1363], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1361, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.cancel_outer": {"executed_lines": [1375, 1376, 1377, 1378, 1379], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1374, "executed_branches": [], "missing_branches": []}, "_failed_epoch_for_recovery": {"executed_lines": [1390, 1391, 1392, 1393, 1394, 1395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1389, "executed_branches": [], "missing_branches": []}, "_rewrite_content_addressed": {"executed_lines": [1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1398, "executed_branches": [], "missing_branches": []}, "_rewrite_failure": {"executed_lines": [1412, 1413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1411, "executed_branches": [], "missing_branches": []}, "test_epoch_raw_lineage_rejects_non_list_and_malformed_entries": {"executed_lines": [1426, 1427, 1428], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1423, "executed_branches": [], "missing_branches": []}, "test_epoch_raw_lineage_rejects_duplicates_and_untrusted_objects": {"executed_lines": [1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1435, "executed_branches": [], "missing_branches": []}, "test_epoch_binding_rejects_noncanonical_time_and_missing_raw_lineage": {"executed_lines": [1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1457, "executed_branches": [], "missing_branches": []}, "test_epoch_snapshot_binding_rejects_malformed_and_mismatched_state": {"executed_lines": [1511, 1512, 1513, 1516, 1521, 1522], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1508, "executed_branches": [], "missing_branches": []}, "test_epoch_snapshot_binding_allows_zero_accepted_rows_without_snapshot": {"executed_lines": [1533, 1534, 1535, 1538, 1543], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1530, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_duplicate_prepared_transactions": {"executed_lines": [1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1557, "executed_branches": [], "missing_branches": []}, "test_epoch_reconcile_rejects_missing_anchor_open_part_and_orphan_journal": {"executed_lines": [1585, 1586, 1587, 1594, 1595, 1596, 1597, 1604, 1605, 1606, 1607, 1616, 1617, 1618], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1582, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_prepared_identity_field": {"executed_lines": [1643, 1644, 1645, 1646, 1647, 1656, 1657], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1640, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_committed_identity_field": {"executed_lines": [1692, 1693, 1694, 1695, 1696, 1697, 1706, 1707], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1689, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_explicit_abort_identity_field": {"executed_lines": [1739, 1740, 1741, 1742, 1751, 1752, 1753, 1754, 1763, 1764], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1736, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_failure_schema_and_type_field": {"executed_lines": [1790, 1791, 1792, 1793, 1802, 1803], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1787, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_failure_lineage_reference_and_filename": {"executed_lines": [1814, 1815, 1816, 1817, 1827, 1828, 1829, 1830, 1840, 1841, 1842, 1843, 1853, 1854, 1855, 1856, 1857, 1858, 1863, 1864, 1865], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1811, "executed_branches": [], "missing_branches": []}, "test_epoch_legacy_failure_and_pending_manifest_negative_paths": {"executed_lines": [1877, 1878, 1879, 1880, 1881, 1882, 1891, 1892, 1899, 1900, 1901, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1921, 1922, 1923, 1926, 1927, 1928, 1929, 1932, 1933, 1934, 1935, 1936, 1937], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1876, "executed_branches": [[1879, 1880], [1879, 1881]], "missing_branches": []}, "test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush": {"executed_lines": [1951, 1952, 1953, 1954, 1955, 1965, 1966, 1967, 1968, 1978, 1979, 1980, 1981, 1982, 1992, 1993, 1994, 1995, 2005, 2006, 2007, 2008], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1948, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable": {"executed_lines": [2022, 2023, 2025, 2030, 2031, 2032, 2033, 2034, 2035, 2036], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2019, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable.corrupt_receipt": {"executed_lines": [2026, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2025, "executed_branches": [[2027, -2025], [2027, 2028]], "missing_branches": []}, "test_epoch_abort_publish_failure_keeps_retryable_open_state": {"executed_lines": [2047, 2048, 2049, 2050, 2059, 2060, 2065, 2066, 2067, 2068, 2069, 2070], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2044, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge": {"executed_lines": [2074, 2075, 2076, 2077, 2078, 2080, 2081, 2083, 2084, 2087, 2093, 2102, 2103, 2104, 2105, 2106, 2108, 2109, 2118, 2119, 2120, 2122, 2123, 2126, 2129, 2130, 2131, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2144, 2145, 2149, 2151, 2152, 2155, 2156, 2157, 2158], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2073, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.__init__": {"executed_lines": [2085], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2084, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.connect": {"executed_lines": [2088, 2089, 2090, 2091], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2087, "executed_branches": [[2089, 2090], [2089, 2091]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.__init__": {"executed_lines": [2124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2123, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.connect": {"executed_lines": [2127], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2126, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection.__init__": {"executed_lines": [2146, 2147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2145, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector.connect": {"executed_lines": [2153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2152, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report": {"executed_lines": [2164, 2165, 2174, 2176, 2194, 2195, 2196, 2197, 2198], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2161, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise": {"executed_lines": [2177, 2179, 2180, 2183, 2187, 2188, 2189, 2190, 2191, 2192], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2176, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [2181], "excluded_lines": [], "start_line": 2180, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.sleep": {"executed_lines": [2184, 2185], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2183, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 118, 150, 204, 233, 267, 271, 293, 320, 365, 397, 422, 449, 472, 473, 504, 505, 539, 595, 644, 668, 705, 754, 799, 864, 914, 948, 1022, 1091, 1158, 1184, 1224, 1256, 1282, 1314, 1389, 1398, 1411, 1416, 1423, 1435, 1457, 1498, 1508, 1530, 1557, 1582, 1626, 1640, 1665, 1689, 1715, 1736, 1772, 1787, 1811, 1876, 1948, 2019, 2044, 2073, 2161], "summary": {"covered_lines": 87, "num_statements": 87, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection": {"executed_lines": [768, 769], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 766, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector": {"executed_lines": [776, 777], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 774, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection": {"executed_lines": [820, 821, 822, 823], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [824], "excluded_lines": [], "start_line": 818, "executed_branches": [[820, 821], [820, 822]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector": {"executed_lines": [830], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 828, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector": {"executed_lines": [878, 879, 881, 882, 885, 889, 892], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[878, 879], [878, 881]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked": {"executed_lines": [883, 886, 890], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [887], "excluded_lines": [], "start_line": 881, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1207], "excluded_lines": [], "start_line": 1205, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1264], "excluded_lines": [], "start_line": 1262, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector": {"executed_lines": [1362, 1363], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1360, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect": {"executed_lines": [2085, 2088, 2089, 2090, 2091], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2083, "executed_branches": [[2089, 2090], [2089, 2091]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover": {"executed_lines": [2124, 2127], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2122, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection": {"executed_lines": [2146, 2147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2144, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector": {"executed_lines": [2153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2151, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock": {"executed_lines": [2184, 2185], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [2181], "excluded_lines": [], "start_line": 2179, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 107, 108, 111, 112, 113, 114, 115, 118, 121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 153, 154, 156, 157, 158, 160, 161, 162, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 207, 208, 209, 211, 213, 214, 216, 217, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264, 267, 268, 271, 274, 276, 280, 289, 290, 293, 296, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354, 365, 368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394, 397, 398, 399, 400, 403, 413, 414, 422, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 449, 452, 453, 454, 455, 460, 461, 472, 473, 474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536, 539, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 560, 561, 562, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 595, 598, 599, 600, 602, 604, 605, 606, 607, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 631, 632, 633, 635, 636, 639, 640, 641, 644, 645, 646, 647, 663, 664, 665, 668, 669, 670, 671, 672, 674, 675, 676, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 705, 708, 709, 711, 712, 713, 714, 715, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751, 754, 755, 756, 757, 758, 764, 766, 767, 774, 775, 779, 792, 793, 794, 795, 796, 799, 800, 801, 806, 807, 813, 815, 816, 818, 819, 826, 828, 829, 832, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 864, 867, 868, 869, 876, 877, 894, 904, 905, 906, 907, 908, 909, 910, 911, 914, 917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945, 948, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 980, 981, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1022, 1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1091, 1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1158, 1159, 1160, 1161, 1162, 1168, 1169, 1184, 1187, 1188, 1189, 1196, 1197, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221, 1224, 1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311, 1314, 1317, 1318, 1319, 1320, 1321, 1328, 1329, 1330, 1331, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1365, 1374, 1375, 1376, 1377, 1378, 1379, 1381, 1382, 1383, 1384, 1385, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1411, 1412, 1413, 1416, 1423, 1426, 1427, 1428, 1435, 1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450, 1457, 1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483, 1498, 1508, 1511, 1512, 1513, 1516, 1521, 1522, 1530, 1533, 1534, 1535, 1538, 1543, 1557, 1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574, 1582, 1585, 1586, 1587, 1594, 1595, 1596, 1597, 1604, 1605, 1606, 1607, 1616, 1617, 1618, 1626, 1640, 1643, 1644, 1645, 1646, 1647, 1656, 1657, 1665, 1689, 1692, 1693, 1694, 1695, 1696, 1697, 1706, 1707, 1715, 1736, 1739, 1740, 1741, 1742, 1751, 1752, 1753, 1754, 1763, 1764, 1772, 1787, 1790, 1791, 1792, 1793, 1802, 1803, 1811, 1814, 1815, 1816, 1817, 1827, 1828, 1829, 1830, 1840, 1841, 1842, 1843, 1853, 1854, 1855, 1856, 1857, 1858, 1863, 1864, 1865, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1891, 1892, 1899, 1900, 1901, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1921, 1922, 1923, 1926, 1927, 1928, 1929, 1932, 1933, 1934, 1935, 1936, 1937, 1948, 1951, 1952, 1953, 1954, 1955, 1965, 1966, 1967, 1968, 1978, 1979, 1980, 1981, 1982, 1992, 1993, 1994, 1995, 2005, 2006, 2007, 2008, 2019, 2022, 2023, 2025, 2026, 2027, 2028, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2044, 2047, 2048, 2049, 2050, 2059, 2060, 2065, 2066, 2067, 2068, 2069, 2070, 2073, 2074, 2075, 2076, 2077, 2078, 2080, 2081, 2083, 2084, 2087, 2093, 2102, 2103, 2104, 2105, 2106, 2108, 2109, 2118, 2119, 2120, 2122, 2123, 2126, 2129, 2130, 2131, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2144, 2145, 2149, 2151, 2152, 2155, 2156, 2157, 2158, 2161, 2164, 2165, 2174, 2176, 2177, 2179, 2180, 2183, 2187, 2188, 2189, 2190, 2191, 2192, 2194, 2195, 2196, 2197, 2198], "summary": {"covered_lines": 936, "num_statements": 958, "percent_covered": 97.47474747474747, "percent_covered_display": "97", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 97.7035490605428, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 3, "covered_branches": 29, "missing_branches": 3, "percent_branches_covered": 90.625, "percent_branches_covered_display": "91"}, "missing_lines": [55, 56, 57, 58, 59, 61, 65, 67, 68, 69, 71, 74, 75, 109, 189, 190, 277, 278, 487, 525, 526, 982], "excluded_lines": [], "start_line": 1, "executed_branches": [[100, 101], [100, 104], [107, 108], [193, 194], [193, 195], [303, 304], [303, 305], [486, 488], [560, 561], [560, 562], [604, 605], [604, 607], [631, 632], [631, 633], [663, -644], [663, 664], [693, 694], [693, 695], [696, 697], [696, 699], [713, 714], [713, 715], [980, 981], [1329, 1330], [1329, 1331], [1879, 1880], [1879, 1881], [2027, -2025], [2027, 2028]], "missing_branches": [[107, 109], [486, 487], [980, 982]]}}}, "tests\\test_capture_v2_synchronizers_epoch.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 369, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 260, "num_statements": 262, "percent_covered": 99.24812030075188, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23664122137404, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": [], "functions": {"stream": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "resolver": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "frame": {"executed_lines": [59, 60, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "binance_snapshot": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "binance_update": {"executed_lines": [87, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[97, 98], [97, 99]], "missing_branches": []}, "okx_message": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "storage": {"executed_lines": [124, 125, 126, 128, 132, 141], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit": {"executed_lines": [145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed": {"executed_lines": [177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [], "missing_branches": []}, "test_binance_snapshot_malformed_and_crossed": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [], "missing_branches": []}, "test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot": {"executed_lines": [217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset": {"executed_lines": [237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "test_okx_gap_heartbeat_levels_errors_and_envelope_guards": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "test_binance_wire_and_book_negative_branches_are_fail_closed": {"executed_lines": [305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [[341, 342], [341, 347]], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync": {"executed_lines": [367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver.resolve": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_sequence_normalizer_no_change_branch_is_strict": {"executed_lines": [395, 396, 397, 400, 401, 402, 405, 406, 409, 410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394, "executed_branches": [], "missing_branches": []}, "test_normalized_epoch_journal_publishes_complete_raw_lineage": {"executed_lines": [419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418, "executed_branches": [], "missing_branches": []}, "test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible": {"executed_lines": [461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "test_epoch_configuration_closed_abort_and_part_integrity_guards": {"executed_lines": [530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 53, 58, 78, 86, 102, 123, 144, 176, 201, 208, 216, 236, 279, 304, 366, 394, 418, 460, 529], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.24528301886792, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": []}}}, "tests\\test_catalog.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_register_and_list": {"executed_lines": [8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_catalog_factors.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_registers_quant_factors_stack": {"executed_lines": [8, 9, 10, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "test_qdk_catalog_list_shows_factors_version": {"executed_lines": [15, 16, 17, 18, 19], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_curated.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "normalized_trades": {"executed_lines": [43, 52, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "curate": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "test_session_bar_aggregation_is_deterministic_and_session_anchored": {"executed_lines": [78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_session_bar_refuses_missing_or_future_session_start": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_curated_revision_is_immutable_and_lineage_changes_snapshot": {"executed_lines": [119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_curated_partition_mutation_is_detected": {"executed_lines": [164, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_curated_reader_rejects_dataset_and_snapshot_path_traversal": {"executed_lines": [178, 179, 180, 181], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 42, 64, 77, 106, 118, 163, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_data_lake.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade_record": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "admitted_raw": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "test_raw_bytes_are_immutable_idempotent_and_conflict_on_key_reuse": {"executed_lines": [75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "test_raw_mutation_is_detected": {"executed_lines": [114, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [], "missing_branches": []}, "test_raw_request_metadata_must_be_canonical_json": {"executed_lines": [130, 131], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "test_capacity_policy_stops_with_explicit_alert": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_cleanup_requires_verified_archive_restore_and_explicit_confirmation": {"executed_lines": [166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_normalized_partitions_quarantine_bad_stream_and_pin_duckdb_snapshot": {"executed_lines": [229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "test_normalized_partition_mutation_fails_hash_validation": {"executed_lines": [274, 275, 283, 284, 285, 286, 287, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_cross_is_quarantined_before_research_layer": {"executed_lines": [292, 293, 319, 336, 344, 345, 346, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_checkpoint_mismatch_is_quarantined": {"executed_lines": [351, 352, 378, 379, 388, 389, 390, 391], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_provider_mismatch_and_non_finite_payload_are_quarantine_evidence": {"executed_lines": [399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 56, 74, 113, 129, 141, 163, 226, 273, 291, 350, 396], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_integrity_branch_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]], "functions": {"normalized": {"executed_lines": [42, 51, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "legacy_normalized": {"executed_lines": [64, 73, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw": {"executed_lines": [88, 89, 98, 107, 108, 109, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [], "missing_branches": []}, "readdress_normalized": {"executed_lines": [135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177]], "missing_branches": []}, "test_normalized_manifest_defense_branches": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches": {"executed_lines": [247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 269, 270, 271], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches.mismatched_load": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards": {"executed_lines": [285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [327], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards.wrong_staging_hash": {"executed_lines": [300, 301], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301]], "missing_branches": [[300, 302]]}, "test_normalized_claim_schema_and_manifest_file_shape": {"executed_lines": [340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "test_legacy_normalized_manifest_remains_strictly_verifiable": {"executed_lines": [408, 409, 410, 411], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed": {"executed_lines": [415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414, "executed_branches": [], "missing_branches": []}, "test_legacy_snapshot_rejects_unexpected_file": {"executed_lines": [469, 470, 471, 472, 473], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [], "missing_branches": []}, "test_raw_path_staging_and_archive_negative_guards": {"executed_lines": [484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": []}, "test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed": {"executed_lines": [529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "readdress_curated": {"executed_lines": [581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": []}, "curated": {"executed_lines": [604, 605], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_defense_branches": {"executed_lines": [667, 668, 669, 670], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_file_and_extra_file_guards": {"executed_lines": [679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_l2_reconstructed_empty_level_guard": {"executed_lines": [706, 707, 708], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 63, 85, 128, 180, 231, 243, 281, 339, 357, 402, 414, 468, 480, 528, 574, 603, 617, 661, 678, 705], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "start_line": 1, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]]}}}, "tests\\test_l2_replay.py": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": [], "functions": {"snapshot": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11, "executed_branches": [], "missing_branches": []}, "delta": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "apply_atomic_group": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "test_gap_duplicate_and_out_of_order_are_rejected": {"executed_lines": [122, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_crossed_delta_is_transactional_and_does_not_pollute_state": {"executed_lines": [127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once": {"executed_lines": [138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 170, 175, 176, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160]], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once.counted_assert": {"executed_lines": [167, 168], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_allows_transient_cross_but_commits_valid_final_book": {"executed_lines": [181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [[192, 193], [192, 196], [193, 192], [193, 194]], "missing_branches": []}, "test_atomic_multi_level_group_rejects_bad_row_and_rolls_back": {"executed_lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [[246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}, "test_atomic_multi_level_group_defensive_entry_guards_preserve_state": {"executed_lines": [258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [], "missing_branches": []}, "test_delete_absent_level_and_price_scale_change_are_rejected": {"executed_lines": [308, 309, 310, 317, 318, 319, 320, 321, 322], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [], "missing_branches": []}, "test_checkpoint_mismatch_and_missing_checkpoint_fail": {"executed_lines": [326, 327, 328, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [], "missing_branches": []}, "test_snapshot_duplicate_price_and_cross_are_rejected_by_frozen_contract": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_resync_snapshot_cannot_switch_stream_identity": {"executed_lines": [345, 346, 347, 348, 349, 350, 351, 352], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344, "executed_branches": [], "missing_branches": []}, "test_uninitialized_unsupported_and_non_snapshot_entry_fail_closed": {"executed_lines": [356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_snapshot_and_delta_time_and_sequence_must_strictly_advance": {"executed_lines": [370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369, "executed_branches": [], "missing_branches": []}, "test_validated_snapshot_and_batch_guards_preserve_state": {"executed_lines": [389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [], "missing_branches": []}, "test_private_validated_dispatch_and_uniform_batch_fail_closed": {"executed_lines": [416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 7, 8, 11, 50, 79, 99, 113, 121, 126, 135, 180, 210, 241, 257, 307, 325, 333, 344, 355, 369, 388, 415], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}}}, "tests\\test_m2_audit_regressions.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]], "functions": {"trade": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "raw": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "normalized": {"executed_lines": [78, 79, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable": {"executed_lines": [95, 96, 105, 107, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable.interrupted_replace": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[108, 109], [108, 110]], "missing_branches": []}, "test_preexisting_half_object_is_quarantined_without_blocking_retry": {"executed_lines": [122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_manifest_anchor_detects_coordinated_retention_and_collection_mutation": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_raw_write_read_and_cleanup_reject_junction_escape": {"executed_lines": [159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [171, 188], "excluded_lines": [], "start_line": 158, "executed_branches": [[170, 172], [187, 189]], "missing_branches": [[170, 171], [187, 188]]}, "test_raw_write_rejects_symbolic_link_escape": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "test_cleanup_rejects_fabricated_missing_and_remote_archives": {"executed_lines": [223, 224, 231, 232, 233, 240, 241, 242], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222, "executed_branches": [[231, 232], [231, 240]], "missing_branches": []}, "test_normalized_requires_existing_unmodified_raw_reference": {"executed_lines": [252, 253, 256, 257, 265, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "test_global_event_id_duplicates_across_streams_are_all_quarantined": {"executed_lines": [279, 280, 281, 282, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278, "executed_branches": [], "missing_branches": []}, "test_arrow_canonical_timestamp_and_physical_snapshot_binding": {"executed_lines": [298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [], "missing_branches": []}, "test_duckdb_blocks_direct_cte_and_parameterized_external_reads": {"executed_lines": [326, 327, 328, 331, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [[338, -325], [338, 339]], "missing_branches": []}, "test_curated_rejects_fake_lineage_and_binds_physical_content": {"executed_lines": [344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_normalized_and_curated_writers_apply_capacity_gate": {"executed_lines": [382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 65, 77, 91, 121, 143, 157, 158, 209, 210, 222, 251, 278, 297, 325, 343, 381], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 1, "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]]}}}, "tests\\test_m2_coverage_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": [], "functions": {"_replace": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "test_schema_negative_branch_matrix": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "test_schema_delete_delta_corporate_ratio_and_registry_fail_closed": {"executed_lines": [99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[114, 115], [114, 119]], "missing_branches": []}, "test_data_lake_guard_branches_are_explicit": {"executed_lines": [130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [[135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176]], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable": {"executed_lines": [202, 203, 204, 206, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable.fail_replace": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_raw_manifest_fields_are_independently_anchored": {"executed_lines": [250, 251, 252, 253, 254, 255, 256], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "test_raw_directory_claim_and_cleanup_state_guards": {"executed_lines": [260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [], "missing_branches": []}, "test_quarantine_published_batch_is_fully_verified": {"executed_lines": [302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301, "executed_branches": [[313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322]], "missing_branches": []}, "test_empty_quarantine_and_unknown_event_helpers_are_closed": {"executed_lines": [334, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit": {"executed_lines": [350, 356, 358, 363, 370, 371, 372, 374, 377, 378, 386, 388, 393, 400, 401, 402, 404, 407, 408, 416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.windows_lock": {"executed_lines": [359, 360, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358, "executed_branches": [[360, -358], [360, 361]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.always_contended": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_lock": {"executed_lines": [389, 390, 391], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [[390, -388], [390, 391]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_always_contended": {"executed_lines": [405], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_raw_claim_cleanup_and_deleting_state_tampering_fail_closed": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[444, 448], [444, 457]], "missing_branches": []}, "test_normalized_admission_and_snapshot_metadata_guards": {"executed_lines": [472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_curated_writer_and_reader_negative_guards": {"executed_lines": [512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_and_revision_tampering_are_rejected": {"executed_lines": [571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 64, 93, 98, 129, 198, 235, 244, 259, 300, 301, 333, 349, 425, 471, 511, 570], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": []}}}, "tests\\test_m2_integration.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]], "functions": {"crypto_context": {"executed_lines": [20, 21, 27, 36], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 19, "executed_branches": [[20, 21]], "missing_branches": [[20, 29]]}, "test_public_m2_api_and_version_are_exposed": {"executed_lines": [40, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, -39], [41, 51]], "missing_branches": []}, "test_build_and_runtime_versions_share_one_authoritative_source": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable": {"executed_lines": [62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "test_domestic_fixture_chain_remains_fixture_only": {"executed_lines": [136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 39, 54, 61, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]]}}}, "tests\\test_m2_process_integrity.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]], "functions": {"_raw_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [51, 52, 53, 55, 62, 63, 64, 73, 74, 75], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": [[52, 53], [52, 63]]}, "_raw_process.crash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": [[56, 59], [56, 60]]}, "_cleanup_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [85, 86, 87, 94, 95, 96], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "_quarantine_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [100, 101, 102, 109, 110, 111], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_normalized_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [121, 122, 123, 131, 132, 133], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [137, 138, 139, 141, 146, 147, 148], "excluded_lines": [], "start_line": 136, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process.crash_before_replace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[142, 143], [142, 144]]}, "_normalized_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [156, 158, 163, 164], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "_normalized_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 158, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "_curated_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [180, 181, 182, 194, 195, 196], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [200, 202, 207, 208], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [203, 204, 205], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": [[203, 204], [203, 205]]}, "_hold_staging_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230, 236, 237, 238, 239], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "_run_pair": {"executed_lines": [243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 242, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264]], "missing_branches": [[254, 255]]}, "_raw": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_normalized": {"executed_lines": [282, 283, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_raw_key_lock_is_process_safe": {"executed_lines": [297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, 307], [306, 310]], "missing_branches": []}, "test_raw_key_claim_survives_corruption_and_hard_exit_staging": {"executed_lines": [317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [], "missing_branches": []}, "test_raw_key_claim_is_source_global_across_collection_dates": {"executed_lines": [353, 354, 363, 364, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes": {"executed_lines": [382, 383, 384, 385, 386, 394, 395, 397, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[415, 416], [415, 420]], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes.fail_once": {"executed_lines": [399, 400, 401, 402], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, 400], [399, 402]], "missing_branches": []}, "test_cleanup_same_key_is_process_idempotent": {"executed_lines": [433, 434, 435, 436, 437, 445, 452, 453, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable": {"executed_lines": [461, 462, 463, 464, 466, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable.fail_manifest": {"executed_lines": [468, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466, "executed_branches": [[468, 469], [468, 471]], "missing_branches": []}, "test_adapter_batch_transaction_rolls_back_final_validation_failure": {"executed_lines": [507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[515, 516], [515, 518], [527, 528], [527, 529]], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 579, 580, 581, 589, 590, 591, 599], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry.fail_snapshot_publish": {"executed_lines": [574, 575, 576, 577], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "test_event_claim_and_curated_revision_are_process_safe": {"executed_lines": [603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding": {"executed_lines": [637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovery_is_process_safe": {"executed_lines": [658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 657, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovers_and_preserves_binding": {"executed_lines": [694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovery_is_process_safe": {"executed_lines": [742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 741, "executed_branches": [], "missing_branches": []}, "_curated_process_once": {"executed_lines": [766], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 765, "executed_branches": [], "missing_branches": []}, "test_atomic_normalized_and_curated_staging_recover_after_hard_exit": {"executed_lines": [779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 778, "executed_branches": [[782, 783], [782, 790]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 269, 281, 295, 296, 316, 352, 376, 377, 432, 457, 502, 503, 532, 602, 636, 657, 693, 741, 765, 778], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 1, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]]}}}, "tests\\test_normalized_v3.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": [], "functions": {"_record_batch": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "_strict_batches": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "_assert_no_snapshot": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_raw": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims": {"executed_lines": [84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134]], "missing_branches": []}, "test_native_writer_validator_matches_frozen_validator_for_l2_edges": {"executed_lines": [139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[150, 151], [150, 154], [154, -138], [154, 155]], "missing_branches": []}, "test_v3_manifest_is_compact_and_does_not_create_per_event_json": {"executed_lines": [163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162, "executed_branches": [[165, 166], [165, 171]], "missing_branches": []}, "test_missing_claim_index_recovers_but_tampering_fails_closed": {"executed_lines": [200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_streaming_writer_applies_capacity_gate_before_partition_write": {"executed_lines": [230, 231, 236, 237, 245], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints": {"executed_lines": [251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248, "executed_branches": [[277, 278], [277, 287]], "missing_branches": []}, "test_record_batch_reader_is_a_supported_strict_input": {"executed_lines": [291, 292, 293, 294, 295, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary": {"executed_lines": [303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 330, 335, 344, 345, 346, 347, 348], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[318, 319], [318, 323], [320, 318], [320, 321]], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary.observed_apply": {"executed_lines": [327, 328], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries": {"executed_lines": [354, 356, 361, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [], "missing_branches": []}, "test_arrow_schema_pit_sequence_and_duplicate_fail_closed": {"executed_lines": [373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372, "executed_branches": [[416, -372], [416, 417]], "missing_branches": []}, "test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected": {"executed_lines": [426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 423, "executed_branches": [[437, 438], [437, 439], [457, -423], [457, 458]], "missing_branches": []}, "test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed": {"executed_lines": [467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464, "executed_branches": [], "missing_branches": []}, "test_arrow_float_schema_preserves_frozen_claims_and_logical_rows": {"executed_lines": [505, 507, 512, 513, 514, 515, 523, 524, 525, 526], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [], "missing_branches": []}, "test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary": {"executed_lines": [540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537, "executed_branches": [], "missing_branches": []}, "test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices": {"executed_lines": [575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[576, 577], [576, 578]], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries": {"executed_lines": [610, 611, 613, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries.fail_snapshot_publish": {"executed_lines": [615, 616, 617, 618], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613, "executed_branches": [[615, 616], [615, 618]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 44, 64, 69, 81, 138, 162, 199, 229, 248, 290, 299, 351, 372, 423, 464, 504, 537, 572, 606], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": []}}}, "tests\\test_normalized_v3_failures.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": [], "functions": {"_encoded_delta_group": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54]], "missing_branches": []}, "_set_path": {"executed_lines": [60, 61, 62, 63], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[61, 62], [61, 63]], "missing_branches": []}, "test_native_l2_validator_exercises_failure_semantics": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "test_input_spool_fallback_and_malformed_records_are_explicit": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [], "missing_branches": []}, "test_digest_and_staging_corruption_guards": {"executed_lines": [143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 139, "executed_branches": [], "missing_branches": []}, "_rewrite_index_manifest": {"executed_lines": [173, 174, 175, 176, 179], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "test_claim_index_manifest_tampering_fails_closed": {"executed_lines": [184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215]], "missing_branches": []}, "test_claim_index_schema_logical_shape_and_missing_manifest_paths": {"executed_lines": [224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221, "executed_branches": [], "missing_branches": []}, "test_v3_claim_conflicts_include_historical_legacy_snapshots": {"executed_lines": [315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314, "executed_branches": [], "missing_branches": []}, "_replace_column": {"executed_lines": [356, 357], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_delta_constraints_fail_closed": {"executed_lines": [434, 435, 436, 441], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_action_quantity_contract": {"executed_lines": [458, 459, 460], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_arrow_common_null_empty_precision_source_and_sequence_guards": {"executed_lines": [468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[484, 485], [484, 486], [487, -467], [487, 488]], "missing_branches": []}, "test_arrow_input_reference_and_empty_batch_contracts": {"executed_lines": [495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries": {"executed_lines": [547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546, "executed_branches": [], "missing_branches": []}, "test_encoded_group_layout_and_concat_helpers_fail_closed": {"executed_lines": [586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585, "executed_branches": [], "missing_branches": []}, "test_encoded_group_checkpoint_and_time_fallbacks_remain_strict": {"executed_lines": [631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[647, 648], [647, 649]], "missing_branches": []}, "test_encoded_atomic_group_negative_gates_publish_nothing": {"executed_lines": [709, 710, 711, 712, 713, 714, 715, 720], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 703, "executed_branches": [], "missing_branches": []}, "test_encoded_atomic_group_duplicate_claim_is_not_bypassed": {"executed_lines": [724, 725, 726, 727, 728, 729, 734], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 723, "executed_branches": [], "missing_branches": []}, "test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts": {"executed_lines": [738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[764, -737], [764, 765]], "missing_branches": []}, "test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing": {"executed_lines": [779, 780, 781, 782, 791], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 776, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_reject_cross_batch_partition_time_regression": {"executed_lines": [795, 796, 797, 798, 799, 804], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 794, "executed_branches": [], "missing_branches": []}, "test_mapping_unsorted_partition_is_sorted_without_changing_events": {"executed_lines": [808, 809, 810, 811, 812, 820, 821, 826], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 807, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path": {"executed_lines": [833, 834, 836, 840, 841, 842, 847, 848, 849], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path.observed_capacity": {"executed_lines": [837, 838], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [], "missing_branches": []}, "test_arrow_common_datetime_is_utc_and_partition_digest_is_strict": {"executed_lines": [853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 852, "executed_branches": [], "missing_branches": []}, "test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts": {"executed_lines": [880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 879, "executed_branches": [], "missing_branches": []}, "test_partition_buffers_reject_internal_schema_and_sort_corruption": {"executed_lines": [907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903, "executed_branches": [[979, 980], [979, 982]], "missing_branches": []}, "test_partition_scans_and_empty_claim_helpers_are_defensive": {"executed_lines": [989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 988, "executed_branches": [], "missing_branches": []}, "test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish": {"executed_lines": [1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1032, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible": {"executed_lines": [1065, 1066, 1067, 1069, 1072, 1073, 1074], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1061, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible.mismatched_load": {"executed_lines": [1070], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1069, "executed_branches": [], "missing_branches": []}, "test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed": {"executed_lines": [1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1077, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults": {"executed_lines": [1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1126, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults.observed_capacity": {"executed_lines": [1148, 1149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1147, "executed_branches": [], "missing_branches": []}, "test_strict_claim_count_fault_does_not_publish": {"executed_lines": [1185, 1186, 1187, 1188], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181, "executed_branches": [], "missing_branches": []}, "test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards": {"executed_lines": [1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1191, "executed_branches": [], "missing_branches": []}, "test_duplicate_spool_ignores_non_string_ids_and_finds_repeats": {"executed_lines": [1240, 1241, 1252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1239, "executed_branches": [], "missing_branches": []}, "test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream": {"executed_lines": [1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1255, "executed_branches": [], "missing_branches": []}, "test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams": {"executed_lines": [1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1281, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 59, 66, 96, 109, 139, 169, 182, 183, 221, 314, 355, 360, 427, 444, 451, 467, 494, 546, 585, 630, 673, 703, 723, 737, 776, 794, 807, 829, 852, 879, 903, 988, 1032, 1061, 1077, 1126, 1181, 1191, 1239, 1255, 1281], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 1, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": []}}}, "tests\\test_panel.py": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_merge_earnings_to_panel": {"executed_lines": [11, 18, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_merge_northbound_to_panel": {"executed_lines": [35, 42, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "test_add_industry_relative_strength": {"executed_lines": [54, 62, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 10, 34, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_alt.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_earnings_forecast_mock": {"executed_lines": [9, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_fetch_earnings_forecast_mock.mock_fetch": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock": {"executed_lines": [26, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock.mock_fetch": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock": {"executed_lines": [41, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock.mock_fetch": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 25, 40], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_prices.py": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_daily_prices_mock": {"executed_lines": [7, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "test_fetch_daily_prices_mock.mock_fetch": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_snapshots.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_snapshot_is_content_addressed_and_idempotent": {"executed_lines": [9, 10, 11, 12, 13, 14], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_snapshot_detects_mutation": {"executed_lines": [18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_storage.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_validate_price_frame_ok": {"executed_lines": [11, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_validate_price_frame_missing_column": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_cache_covers_range": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "test_save_manifest": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "test_should_refresh_cache": {"executed_lines": [50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 27, 33, 39, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_temporal.py": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_point_in_time_join_uses_availability_not_event_date": {"executed_lines": [13, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "test_audit_rejects_future_data": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "test_apply_symbol_lifecycle_keeps_delisted_history": {"executed_lines": [42, 48, 51, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 12, 35, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_universe.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_historical_universe_refuses_survivorship_fallback": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_historical_universe_allows_explicit_current_fallback": {"executed_lines": [22, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 21], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_v2_contract_branches.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": [], "functions": {"fp": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "test_market_event_base_and_simple_event_negative_contracts": {"executed_lines": [57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[77, 78], [77, 80]], "missing_branches": []}, "_bar": {"executed_lines": [111, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "test_bar_contract_rejects_each_structural_violation": {"executed_lines": [128, 129, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[138, -127], [138, 139]], "missing_branches": []}, "_snapshot": {"executed_lines": [144, 149, 150], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_book_snapshot_and_delta_negative_contracts": {"executed_lines": [154, 173, 174, 175, 177, 185, 194, 195, 196], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[173, 174], [173, 177], [194, -153], [194, 195]], "missing_branches": []}, "test_funding_corporate_action_status_and_payload_branches": {"executed_lines": [200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[200, 201], [200, 208], [229, 230], [229, 232]], "missing_branches": []}, "instrument_spec": {"executed_lines": [244, 267, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_reference_contract_negative_branches_and_serializers": {"executed_lines": [272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 42, 56, 110, 127, 143, 153, 199, 243, 271], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}}}, "tests\\test_v2_contracts.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": [], "functions": {"fp": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_fixed_point_is_exact_and_utc_is_strict": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_instrument_spec_matches_json_and_arrow_contracts": {"executed_lines": [91, 109, 110, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "test_market_clock_uses_explicit_trading_day": {"executed_lines": [117, 127, 128, 129, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "test_trade_and_quote_events_enforce_causal_time": {"executed_lines": [134, 140, 141, 148, 149, 150, 151, 152], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_l2_snapshot_and_delta_are_strictly_sequenced": {"executed_lines": [160, 165, 166, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [], "missing_branches": []}, "test_public_json_validation_enforces_event_semantics": {"executed_lines": [187, 193, 194, 195, 196, 197, 199, 200, 201, 202], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [], "missing_branches": []}, "test_public_stream_validation_rejects_duplicate_and_out_of_order_records": {"executed_lines": [206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "test_stream_validation_connects_l2_snapshot_to_first_delta": {"executed_lines": [242, 249, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_reference_json_validation_matches_dataclass_semantics": {"executed_lines": [266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "test_all_event_arrow_schemas_require_sequence_and_l2_lists_require_items": {"executed_lines": [286, 297, 298, 299, 300], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[286, 297], [286, 298]], "missing_branches": []}, "test_asset_specific_events_match_registered_schemas": {"executed_lines": [304, 310, 311, 318, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[318, -303], [318, 323]], "missing_branches": []}, "test_bitemporal_join_never_uses_future_knowledge": {"executed_lines": [327, 334, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_all_frozen_v2_golden_records_match_json_and_arrow_field_contracts": {"executed_lines": [350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [[367, -349], [367, 368]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 63, 77, 90, 116, 133, 159, 186, 205, 241, 265, 285, 303, 326, 349], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": []}}}, "tools\\benchmark_capture_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 91, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170, 171, 172, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 197, 219, 220, 223, 228, 233, 234, 235, 238, 240, 241, 242, 243, 244, 245, 246, 247, 259, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 201, "num_statements": 324, "percent_covered": 62.121212121212125, "percent_covered_display": "62", "missing_lines": 123, "excluded_lines": 0, "percent_statements_covered": 62.03703703703704, "percent_statements_covered_display": "62", "num_branches": 72, "num_partial_branches": 9, "covered_branches": 45, "missing_branches": 27, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131, 173, 194, 221, 224, 225, 226, 229, 230, 269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286, 296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308, 443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139], [149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174], [186, -185], [241, 242], [241, 243], [312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123], [172, 173], [186, 194], [278, 279], [278, 280], [281, 282], [281, 283], [302, 303], [302, 304], [364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]], "functions": {"ProviderBatchingExecutor.__init__": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "ProviderBatchingExecutor.submit": {"executed_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [88], "excluded_lines": [], "start_line": 73, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89]], "missing_branches": [[82, 87], [87, 88]]}, "ProviderBatchingExecutor._flush_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [92, 93, 94], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": [[93, -91], [93, 94]]}, "ProviderBatchingExecutor._launch_locked": {"executed_lines": [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 121], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [[99, 100], [99, 101], [101, 102], [101, 103]], "missing_branches": []}, "ProviderBatchingExecutor._launch_locked.complete": {"executed_lines": [109, 110, 111, 112, 114, 115, 116, 117, 118, 119], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [113], "excluded_lines": [], "start_line": 108, "executed_branches": [[112, 118], [115, 116], [115, 117], [118, -108], [118, 119]], "missing_branches": [[112, 113]]}, "ProviderBatchingExecutor.shutdown": {"executed_lines": [124, 125, 126, 127, 128, 129, 132, 133, 134], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [130, 131], "excluded_lines": [], "start_line": 123, "executed_branches": [[126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134]], "missing_branches": [[129, 130], [130, 131], [130, 132], [132, -123]]}, "ProviderBatchingExecutor.assert_quiescent": {"executed_lines": [137, 138, 139], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[138, -136], [138, 139]], "missing_branches": []}, "BenchmarkTiming.mark_workload_completed": {"executed_lines": [149, 150, 151], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[149, 150], [149, 151]], "missing_branches": []}, "BenchmarkTiming.mark_pool_closed": {"executed_lines": [154, 155, 156], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[154, 155], [154, 156]], "missing_branches": []}, "BenchmarkTiming.workload_seconds": {"executed_lines": [160, 161, 162], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [[160, 161], [160, 162]], "missing_branches": []}, "BenchmarkTiming.worker_teardown_seconds": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[166, 167], [166, 168]], "missing_branches": []}, "BenchmarkTiming.total_wall_seconds": {"executed_lines": [172, 174], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [173], "excluded_lines": [], "start_line": 171, "executed_branches": [[172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario.__post_init__": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [224, 225, 226], "excluded_lines": [], "start_line": 223, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230], "excluded_lines": [], "start_line": 228, "executed_branches": [], "missing_branches": []}, "FixtureHttp.__init__": {"executed_lines": [235, 238], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [], "missing_branches": []}, "FixtureHttp.get": {"executed_lines": [241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [269, 270, 271, 272], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "FixtureConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [275], "excluded_lines": [], "start_line": 274, "executed_branches": [], "missing_branches": []}, "FixtureConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [278, 279, 280, 281, 282, 283], "excluded_lines": [], "start_line": 277, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [286], "excluded_lines": [], "start_line": 285, "executed_branches": [], "missing_branches": []}, "FixtureConnector.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [296, 297, 298, 299], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "FixtureConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "_book_levels": {"executed_lines": [312, 313, 314, 315, 316], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311, "executed_branches": [[312, 313], [312, 314]], "missing_branches": []}, "_update_levels": {"executed_lines": [329, 330, 331, 332], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[330, 331], [330, 332]], "missing_branches": []}, "_messages": {"executed_lines": [338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432]], "missing_branches": [[364, 366]]}, "_expected_normalized_rows": {"executed_lines": [436, 437, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435, "executed_branches": [], "missing_branches": []}, "_percentile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [443, 444, 445, 446, 447], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": [[443, 444], [443, 445]]}, "_event_loop_sampler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [451, 452, 453, 454, 455, 456, 457], "excluded_lines": [], "start_line": 450, "executed_branches": [], "missing_branches": [[453, -450], [453, 454]]}, "_git_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [461, 468, 477], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "_run_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [485, 486, 487, 488, 489, 494, 495, 496, 502, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": [[494, 495], [494, 496]]}, "_run_benchmark.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [503], "excluded_lines": [], "start_line": 502, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": [[699, 700], [699, 701]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 322, 335, 435, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 89, "num_statements": 90, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.88888888888889, "percent_statements_covered_display": "99", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [718], "excluded_lines": [], "start_line": 1, "executed_branches": [[717, -1]], "missing_branches": [[717, 718]]}}, "classes": {"ProviderBatchingExecutor": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 124, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 139], "summary": {"covered_lines": 58, "num_statements": 65, "percent_covered": 83.15789473684211, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 89.23076923076923, "percent_statements_covered_display": "89", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 9, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123]]}, "BenchmarkTiming": {"executed_lines": [149, 150, 151, 154, 155, 156, 160, 161, 162, 166, 167, 168, 172, 174], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [173], "excluded_lines": [], "start_line": 143, "executed_branches": [[149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 178, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221, 224, 225, 226, 229, 230], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "FixtureHttp": {"executed_lines": [235, 238, 241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 118, "num_statements": 203, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 58.12807881773399, "percent_statements_covered_display": "58", "num_branches": 22, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "55"}, "missing_lines": [443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "start_line": 1, "executed_branches": [[312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]]}}}, "tools\\benchmark_normalized_l2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 164, "num_statements": 215, "percent_covered": 73.51778656126483, "percent_covered_display": "74", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 76.27906976744185, "percent_statements_covered_display": "76", "num_branches": 38, "num_partial_branches": 10, "covered_branches": 22, "missing_branches": 16, "percent_branches_covered": 57.89473684210526, "percent_branches_covered_display": "58"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [187, -186], [187, 188], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]], "functions": {"synthetic_l2_events": {"executed_lines": [57, 59, 85, 86], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [58], "excluded_lines": [], "start_line": 55, "executed_branches": [[57, 59], [85, -55], [85, 86]], "missing_branches": [[57, 58]]}, "_repeat": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "synthetic_l2_batches": {"executed_lines": [111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [112, 114], "excluded_lines": [], "start_line": 109, "executed_branches": [[111, 113], [113, 115], [128, -109], [128, 129]], "missing_branches": [[111, 112], [113, 114]]}, "_PeakRssSampler.__init__": {"executed_lines": [180, 181, 182, 183, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler._sample": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "_PeakRssSampler.__enter__": {"executed_lines": [191, 192], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler.__exit__": {"executed_lines": [195, 196, 197], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "_profile_storage_stages": {"executed_lines": [202, 217, 222, 225, 229, 231, 232, 243, 244, 245, 247, 248], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[229, 231], [229, 244], [247, -200], [247, 248]], "missing_branches": []}, "_profile_storage_stages.measured": {"executed_lines": [235, 236, 237, 239, 240, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232, "executed_branches": [], "missing_branches": []}, "_git_identity": {"executed_lines": [252, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "_git_identity.git": {"executed_lines": [253, 260], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252, "executed_branches": [], "missing_branches": []}, "_tree_bytes": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_disk_roots": {"executed_lines": [274, 280, 281, 282, 284, 285, 286], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [283], "excluded_lines": [], "start_line": 273, "executed_branches": [[281, 282], [281, 286], [282, 284]], "missing_branches": [[282, 283]]}, "_disk_usage": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "_run_once_independent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [308, 309, 329, 330, 331, 335, 336, 337], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[330, 331], [330, 335]]}, "_run_once": {"executed_lines": [347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [369, 389], "excluded_lines": [], "start_line": 340, "executed_branches": [[368, 370], [388, 390]], "missing_branches": [[368, 369], [388, 389]]}, "run_benchmark": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 5, "percent_branches_covered": 37.5, "percent_branches_covered_display": "38"}, "missing_lines": [428, 430, 467, 468, 469, 470, 471], "excluded_lines": [], "start_line": 414, "executed_branches": [[427, 429], [429, 431], [466, 472]], "missing_branches": [[427, 428], [429, 430], [466, 467], [468, 469], [468, 470]]}, "_parser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": [[565, 566], [565, 576]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 105, 109, 178, 179, 186, 190, 194, 200, 201, 251, 269, 273, 289, 301, 340, 414, 534, 557, 596], "summary": {"covered_lines": 57, "num_statements": 58, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.27586206896552, "percent_statements_covered_display": "98", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [597], "excluded_lines": [], "start_line": 1, "executed_branches": [[596, -1]], "missing_branches": [[596, 597]]}}, "classes": {"_PeakRssSampler": {"executed_lines": [180, 181, 182, 183, 184, 187, 188, 191, 192, 195, 196, 197], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 186, 190, 194, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 152, "num_statements": 203, "percent_covered": 71.96652719665272, "percent_covered_display": "72", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 74.8768472906404, "percent_statements_covered_display": "75", "num_branches": 36, "num_partial_branches": 10, "covered_branches": 20, "missing_branches": 16, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "start_line": 1, "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]]}}}}, "totals": {"covered_lines": 12887, "num_statements": 13739, "percent_covered": 92.53542357552004, "percent_covered_display": "93", "missing_lines": 852, "excluded_lines": 34, "percent_statements_covered": 93.79867530387946, "percent_statements_covered_display": "94", "num_branches": 2846, "num_partial_branches": 248, "covered_branches": 2460, "missing_branches": 386, "percent_branches_covered": 86.43710470836261, "percent_branches_covered_display": "86"}} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/pip-check-sha256-672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf.txt b/validation/m7-capture-remediation-v4/artifacts/pip-check-sha256-672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf.txt new file mode 100644 index 0000000..5c7a95a --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/pip-check-sha256-672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf.txt @@ -0,0 +1 @@ +No broken requirements found. diff --git a/validation/m7-capture-remediation-v4/artifacts/pytest-hardexit-junit-sha256-ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816.xml b/validation/m7-capture-remediation-v4/artifacts/pytest-hardexit-junit-sha256-ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816.xml new file mode 100644 index 0000000..dc1f317 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/pytest-hardexit-junit-sha256-ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/pytest-main-junit-sha256-b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b.xml b/validation/m7-capture-remediation-v4/artifacts/pytest-main-junit-sha256-b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b.xml new file mode 100644 index 0000000..0cd4b76 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/pytest-main-junit-sha256-b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b.xml @@ -0,0 +1 @@ +H:\Documents\ChatGPT\temp\puresaber-quant-platform\.worktrees\quant-data-kit-m7\tests\test_m2_audit_regressions.py:209: POSIX symbolic-link regression \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/ruff-check-sha256-a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt b/validation/m7-capture-remediation-v4/artifacts/ruff-check-sha256-a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt new file mode 100644 index 0000000..7f6ba29 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/ruff-check-sha256-a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt @@ -0,0 +1 @@ +All checks passed! diff --git a/validation/m7-capture-remediation-v4/artifacts/ruff-format-sha256-396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e.txt b/validation/m7-capture-remediation-v4/artifacts/ruff-format-sha256-396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e.txt new file mode 100644 index 0000000..d493e74 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/ruff-format-sha256-396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e.txt @@ -0,0 +1 @@ +90 files already formatted diff --git a/validation/m7-capture-remediation-v4/artifacts/sparse-round-01-sha256-35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746.json b/validation/m7-capture-remediation-v4/artifacts/sparse-round-01-sha256-35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746.json new file mode 100644 index 0000000..3ddd5b6 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/sparse-round-01-sha256-35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.1580274572210385,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.1580274572210385},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:47:31.328959Z","report_sha256":"205591547b5149e140b6ff11f32ba4e45686782042f954c03b4a76171b182472","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.985164599998825,"event_loop_delay_p95_milliseconds":15.020300001197029,"event_loop_delay_p99_milliseconds":16.43750000221189,"event_loop_delay_samples":441,"last_epoch_submit_seconds":4.560951199997362,"normalization_group_window_seconds":2.4094891999993706,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1144.1391087622108,"throughput_websocket_messages_per_second":572.6421965776831,"total_wall_seconds":7.046537099999114,"worker_teardown_seconds":0.06137250000028871,"workload_elapsed_seconds":6.985164599998825},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/sparse-round-02-sha256-c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d.json b/validation/m7-capture-remediation-v4/artifacts/sparse-round-02-sha256-c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d.json new file mode 100644 index 0000000..e9f2934 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/sparse-round-02-sha256-c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.143786345351479,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.143786345351479},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:47:45.832305Z","report_sha256":"40ed1b5879f9aac9184120ab433c543687c6869e2f4129ffbd23c39946abe1a6","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.999089500000991,"event_loop_delay_p95_milliseconds":15.003599997726269,"event_loop_delay_p99_milliseconds":16.323499999998603,"event_loop_delay_samples":444,"last_epoch_submit_seconds":4.556456500002241,"normalization_group_window_seconds":2.4409854000005,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1141.8628094409805,"throughput_websocket_messages_per_second":571.5029076281184,"total_wall_seconds":7.05681370000093,"worker_teardown_seconds":0.05772419999993872,"workload_elapsed_seconds":6.999089500000991},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/artifacts/sparse-round-03-sha256-eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042.json b/validation/m7-capture-remediation-v4/artifacts/sparse-round-03-sha256-eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042.json new file mode 100644 index 0000000..2309588 --- /dev/null +++ b/validation/m7-capture-remediation-v4/artifacts/sparse-round-03-sha256-eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042.json @@ -0,0 +1 @@ +{"collector_commit":"dfb53b02d1bf01ff592b4948475ebdc8e6dd301c","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.194440872802899,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.194440872802899},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T12:47:59.096391Z","report_sha256":"c2a42a2a36f5f1c1c4939fd24ef6c2ed721c769d51cca2450fb4eec937660dd0","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.949810400001297,"event_loop_delay_p95_milliseconds":15.02749999781372,"event_loop_delay_p99_milliseconds":18.280999996932223,"event_loop_delay_samples":438,"last_epoch_submit_seconds":4.544347099999868,"normalization_group_window_seconds":2.3905631999987236,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1149.9594291088154,"throughput_websocket_messages_per_second":575.5552698242319,"total_wall_seconds":7.010264000000461,"worker_teardown_seconds":0.060453599999164,"workload_elapsed_seconds":6.949810400001297},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v4/evidence-manifest.json b/validation/m7-capture-remediation-v4/evidence-manifest.json new file mode 100644 index 0000000..aa70c0b --- /dev/null +++ b/validation/m7-capture-remediation-v4/evidence-manifest.json @@ -0,0 +1,127 @@ +{ + "schema_version": "puresaber.m7-capture-core-remediation-evidence@4.0.0", + "source_commit": "dfb53b02d1bf01ff592b4948475ebdc8e6dd301c", + "source_working_tree_dirty": false, + "package_version": "0.7.3", + "requirements_lock_sha256": "fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88", + "certification": { + "software_fixture": "PASS_PENDING_INDEPENDENT_VALIDATION", + "performance": "PASS_PENDING_INDEPENDENT_VALIDATION", + "public_network": "NOT_RUN_CAPACITY_BLOCKED", + "continuous_days": 0, + "market_data_certified": false + }, + "quality": { + "pytest_passed": 421, + "pytest_skipped": 1, + "pytest_failed": 0, + "mutually_exclusive_partitions": 2, + "source_branch_coverage": "2171/2494=87.05%", + "epoch_branch_coverage": "207/224=92.41%", + "configured_core_modules_at_least_90_percent": true + }, + "artifacts": [ + { + "label": "dense-round-01", + "path": "artifacts/dense-round-01-sha256-4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062.json", + "sha256": "4b7ef84f5e8bc040bbd8a2d6fc57417e40dd873595c25e5912f9fb879e2c3062", + "bytes": 4579 + }, + { + "label": "dense-round-02", + "path": "artifacts/dense-round-02-sha256-12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76.json", + "sha256": "12a5e63a544e5efa18798f4986e75835b55473df8c168a679dfa813133875e76", + "bytes": 4586 + }, + { + "label": "dense-round-03", + "path": "artifacts/dense-round-03-sha256-d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570.json", + "sha256": "d43ea56b7b0909300734ede84beccfae7151a0b86819c820c3e736e2fb642570", + "bytes": 4581 + }, + { + "label": "sparse-round-01", + "path": "artifacts/sparse-round-01-sha256-35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746.json", + "sha256": "35a2ecebb5d58a75395d3a581cfcabf10d1a6a366a4ce0960da3832655f03746", + "bytes": 4410 + }, + { + "label": "sparse-round-02", + "path": "artifacts/sparse-round-02-sha256-c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d.json", + "sha256": "c99a75ada94aefb00450a9bfa30b3b54612c940f041d99bd7aeb00dd2a43ad5d", + "bytes": 4405 + }, + { + "label": "sparse-round-03", + "path": "artifacts/sparse-round-03-sha256-eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042.json", + "sha256": "eff3ee832cb957ed9329d1806bc9b14ad0994cf0411ba9c91b27e6e9220c2042", + "bytes": 4406 + }, + { + "label": "full-coverage", + "path": "artifacts/full-coverage-sha256-0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b.json", + "sha256": "0dc76dd6375d5b1b68d75b2af14502cb1d8708c97cd5dde54a096a3ab080400b", + "bytes": 1167261 + }, + { + "label": "pytest-main-junit", + "path": "artifacts/pytest-main-junit-sha256-b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b.xml", + "sha256": "b640f8753f290b1125aa6170511e478660fe3c4e2f7eb51f0083406f8646f51b", + "bytes": 61893 + }, + { + "label": "pytest-hardexit-junit", + "path": "artifacts/pytest-hardexit-junit-sha256-ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816.xml", + "sha256": "ab2aee351bf5f3fe0a11de29208e26cbda1126b4e638c5a9d46ae1d8ee980816", + "bytes": 395 + }, + { + "label": "branch-gates", + "path": "artifacts/branch-gates-sha256-996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e.txt", + "sha256": "996b184609e535a18939bf460514cc68e98e7603307b6af52be7967568cabb5e", + "bytes": 1252 + }, + { + "label": "pip-check", + "path": "artifacts/pip-check-sha256-672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf.txt", + "sha256": "672aec65a45bed50e70229c70934a7eebf0462595c459b83023027645d57cccf", + "bytes": 31 + }, + { + "label": "ruff-check", + "path": "artifacts/ruff-check-sha256-a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0.txt", + "sha256": "a4443afdcfb6d7363adb285762515ccf7cf50473b1a05c20c1a50f6bed4d26b0", + "bytes": 20 + }, + { + "label": "ruff-format", + "path": "artifacts/ruff-format-sha256-396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e.txt", + "sha256": "396ab8e4486501ce2a446ec05ed1906fdb6fec6b28dad3734a3656bcdfecd14e", + "bytes": 28 + }, + { + "label": "data-10m-3run", + "path": "artifacts/data-10m-3run-sha256-e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3.json", + "sha256": "e144962949c30bc81f34da6bfba668bb7d6bd34b51fa5af70a070696bca599a3", + "bytes": 24481 + }, + { + "label": "capacity-preflight-refusal", + "path": "artifacts/capacity-preflight-refusal-sha256-9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b.json", + "sha256": "9f2a567f2e97cc326681288a8d74c19524d591f321f23e909661b9ad3174996b", + "bytes": 6583 + }, + { + "label": "capacity-run-refusal", + "path": "artifacts/capacity-run-refusal-sha256-e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb.json", + "sha256": "e7a94af705ddc6e5d267ba7b2e2f5c897a99a663f0e4f3c769f521e617c945eb", + "bytes": 6583 + }, + { + "label": "cli-invocation-results", + "path": "artifacts/cli-invocation-results-sha256-6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f.json", + "sha256": "6f7bbb614b21b51938be90c1ea9908f61b1ad7a25f3e5311241aba29bd9ce04f", + "bytes": 1937 + } + ] +} diff --git a/validation/m7-capture-remediation-v4/summary.md b/validation/m7-capture-remediation-v4/summary.md new file mode 100644 index 0000000..d1aaac3 --- /dev/null +++ b/validation/m7-capture-remediation-v4/summary.md @@ -0,0 +1,115 @@ +# M7 capture recovery and terminal-binding candidate evidence + +## Decision boundary + +- Source commit:`dfb53b02d1bf01ff592b4948475ebdc8e6dd301c`; every source-dependent + quality, performance and capacity run recorded a clean working tree. +- Branch:`codex/cross-asset-v2-m7-data-performance`; PR`PureSaber/quant-data-kit#6` + remains open, unmerged and untagged. +- This candidate supersedes only the software/fixture acceptance decision from + `validation/m7-capture-remediation-v3`. Historical evidence is unchanged. +- Software, deterministic fixture and local performance gates pass pending GitHub CI and a new + independent read-only validation of the three previously reported P2 findings. +- Public Binance/OKX capture was not run. Continuous days remain0 and + `market_data_certified=false`. No credentials, authenticated API, account endpoint, order route, + live order or destructive cleanup was used. + +## Closed findings and enforced invariants + +The Normalized epoch protocol persists immutable`PREPARED -> COMMITTED | ABORTED`states. A real +spawned child process publishes a snapshot, persists a boundary marker and calls`os._exit`before +the COMMITTED receipt. A fresh parent process proves that PREPARED and the snapshot survived, +reconciles them exactly once before network-runner construction, and then proves a second +reconciliation is a no-op. On this Windows/PyArrow host an abrupt native termination may be +reported as a nonzero native status instead of the requested87; the marker and durable filesystem +state bind the tested crash window without accepting a normal exit. + +Recovery now anchors every stream to the frozen collector configuration rather than trusting a +journal-provided provider or venue. It validates exact schema versions, canonical UTC time, strict +integer and Boolean types, policy, attempt, provider, venue, records, sealed part hashes and row +counts, available and unique Raw lineage, snapshot identity and row arithmetic for every PREPARED, +COMMITTED, explicit ABORTED and retryable failure record. Duplicate PREPARED states, multiple or +conflicting terminal states, terminal-then-pending work, orphan journals and legacy failures with no +durable PREPARED identity all block startup. + +The path-bootstrap lock is validated before the file-lock backend may open it, created exclusively, +fsynced, then revalidated as a regular non-reparse file before and inside the process lock. A real +Windows directory junction at the lock path is rejected before the mocked lock backend is entered; +the outside sentinel is unchanged and the requested capture directory is not created. + +## Quality gates + +Environment: isolated`.venv-m7-verify`, Python3.12.5, package0.7.3, +`requirements.lock`SHA-256 +`fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88`. + +| Gate | Result | +|---|---| +|`pip check` | PASS;no broken requirements | +|`ruff check .` | PASS | +|`ruff format --check .` | PASS;90 files unchanged | +| Mutually exclusive pytest partitions | PASS;421 passed,0 failed,1 existing platform skip | +| Full source pure branch coverage | PASS;2171/2494=87.05%,required>=80% | +| Every configured core module | PASS;all17 modules>=90% | +|`capture_v2/epoch.py` |207/224=92.41% | +|`capture_v2/collector.py` |85/94=90.43% | +|`capture_v2/storage.py` |125/136=91.91% | + +The main partition has420 passes, one existing skip and one deliberately deselected native +hard-exit case. The isolated partition executes that one case and passes. The JUnit artifacts prove +the two partitions are mutually exclusive and together cover the full collection. + +## Deterministic eight-stream capture benchmarks + +Each fixture round includes exact Raw frames, Raw segment publication, Normalized publication, +archive copy, restore hash verification and complete worker shutdown. Every report records the +exact source commit,`working_tree_dirty=false`, consistency true and gate true. + +| Scenario | Rounds | Messages/round | Normalized rows/round | Messages/s | p99 | Safety multiple | +|---|---:|---:|---:|---:|---:|---:| +| Dense20+20 levels/update |3 |8,000 |319,688 |306.30/308.89/310.79 |37.70/37.61/37.07ms |3.83/3.86/3.88x | +| Sparse1+1 level/update |3 |4,000 |7,992 |572.64/571.50/575.56 |16.44/16.32/18.28ms |7.16/7.14/7.19x | + +The dense gate requires at least240messages/s, scenario-density rows at3x the frozen80messages/s +live offer rate, and p99 at most100ms. All six rounds pass. + +## Three independent10-million-event runs + +All runs execute in independent processes, accept all10,000,000 valid events, quarantine0, pass +strict reload, and retain3,310,487,778bytes without cleanup. + +| Run | Events/s | Peak RSS | Result | +|---:|---:|---:|---| +|1 |188,642.01 |3.122GiB | PASS | +|2 |188,341.75 |3.107GiB | PASS | +|3 |190,168.20 |3.101GiB | PASS | + +The snapshot logical hash, snapshot manifest hash and final L2 checkpoint hash match across all +three runs. Minimum throughput has88.3% headroom over the100,000events/s gate and peak memory is +well below16GiB. + +## Capacity refusal and CLI evidence + +The installed`qdk-capture.exe`was invoked in safe`preflight`mode and explicit +`run --confirm-long-running`mode. Both returned exit code2 and immutable +`PAUSED_PREFLIGHT_FAILED`reports before network startup. After the150GiB archive reserve, projected +capacity was about59.68GB versus the199,710,735,564-byte safety floor. All eight streams report0 +WebSocket messages and`long_running_capture_started=false`. + +The content-addressed CLI invocation artifact binds exact argv, config hash, source commit, exit +codes, run IDs and both report hashes. + +## Remaining certification risks + +- Public Binance/OKX TLS, snapshot bridge, reconnect/resync and real-message quality remain + unverified because fail-closed capacity preflight correctly blocked network startup. +- Current archive capacity cannot support the required retained30-day eight-stream run. No30-day + continuous dataset, archive restore drill or cross-source real-market quality report exists. +- Legally authorized domestic L2 remains unavailable and is fixture-certified only. +- The Windows native hard-exit/Coverage interaction remains an infrastructure risk; the critical + crash test is not skipped and validates a real nonzero child termination plus durable boundary. +- GitHub Python3.10/3.11/3.12 CI and an independent read-only review are required before promoting + software/fixture status from pending. + +All17 artifacts are content-addressed and byte-preserved by the local`.gitattributes`. Historical +evidence directories were not rewritten. diff --git a/validation/m7-capture-remediation-v4/technical-handoff.md b/validation/m7-capture-remediation-v4/technical-handoff.md new file mode 100644 index 0000000..04d7061 --- /dev/null +++ b/validation/m7-capture-remediation-v4/technical-handoff.md @@ -0,0 +1,68 @@ +# M7 capture recovery remediation technical handoff + +## 1. Scope and acceptance conditions + +Scope is the independent validator's three P2 findings against the previous candidate: + +1. prove the snapshot-before-receipt crash window with an actually terminated child process; +2. validate complete and independently anchored PREPARED/terminal bindings, including conflicts and + legacy no-PREPARED failure records; +3. reject a reparse/junction bootstrap lock before the lock backend opens it. + +Acceptance additionally requires the complete quality and branch gates, three dense and three +sparse fixture rounds, three retained10-million-event runs, real CLI capacity refusal, exact-source +GitHub CI and a new independent read-only verdict with no P1/P2 findings. Public network capture, +30-day retention, domestic market-data certification and real orders are explicitly excluded. + +## 2. Modified files + +Source commit`dfb53b02d1bf01ff592b4948475ebdc8e6dd301c`modifies: + +- Recovery protocol, terminal bindings and reconciliation: + `src/quant_data_kit/capture_v2/epoch.py`. +- Independent stream identity injection before runner construction: + `src/quant_data_kit/capture_v2/collector.py`. +- Bootstrap-lock reparse safety:`src/quant_data_kit/capture_v2/storage.py`. +- Crash, mutation, type/schema, lineage, conflict, orphan and real-junction tests: + `tests/test_capture_v2_remediation.py`and the impacted integration test. +- Package version and operator documentation:`src/quant_data_kit/_version.py`, + `README.md`and`docs/m7-crypto-l2-capture.md`. + +This evidence-only follow-up adds`validation/m7-capture-remediation-v4`. Rollback is a Git revert +of the source and evidence commits; no tag movement, history rewrite, data migration or deletion is +required. + +## 3. Test commands, results and evidence + +Executed command families: + +```text +.venv-m7-verify/Scripts/python -m pip check +.venv-m7-verify/Scripts/python -m ruff check . +.venv-m7-verify/Scripts/python -m ruff format --check . +.venv-m7-verify/Scripts/python -m coverage run --branch -m pytest tests --deselect= --junitxml= +.venv-m7-verify/Scripts/python -m coverage run --append --branch -m pytest --junitxml= +.venv-m7-verify/Scripts/python tools/check_branch_coverage.py +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario dense-burst --messages-per-stream 1000 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario sparse --messages-per-stream 500 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_normalized_l2.py --rows 10000000 --runs 3 --batch-rows 262144 --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 ... +.venv-m7-verify/Scripts/qdk-capture.exe --mode preflight +.venv-m7-verify/Scripts/qdk-capture.exe --mode run --confirm-long-running +``` + +Results:421 passed,1 existing platform skip,0 failures; all17 core modules exceed90% pure branch +coverage and all source is87.05%; all six capture rounds pass; all three10M runs pass strict reload, +determinism, throughput, memory and retention gates; both CLI calls exit2 before network startup and +report0WebSocket messages. Exact hashes and byte lengths are in`evidence-manifest.json`. + +## 4. Remaining risks and dependencies + +- Provision an independent archive target that preserves the150GiB reserve and remains above the + 20%/100GiB floor; then rerun preflight before any bounded public probe. +- After capacity passes, verify public Binance/OKX TLS and run bounded real-message probes, followed + by retained30-day capture, archive restore and cross-source quality review. +- Obtain legally authorized domestic L2 before any real-market domestic certification. +- Retain the isolated native hard-exit partition until the Windows/PyArrow status-code interaction + is explained; never skip the critical child-termination test. +- Require GitHub Python3.10/3.11/3.12 CI and a new independent read-only verdict before accepting + this remediation candidate. From 13e004a80296bb3a49c4bd54e64cb64670e56b01 Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 21:40:03 +0800 Subject: [PATCH 15/16] fix: bind epoch receipts to journal content --- README.md | 2 +- docs/m7-crypto-l2-capture.md | 7 +- src/quant_data_kit/_version.py | 2 +- src/quant_data_kit/capture_v2/epoch.py | 374 ++++++++++++++++++++++++- tests/test_capture_v2_remediation.py | 244 +++++++++++++++- tests/test_m2_integration.py | 2 +- 6 files changed, 617 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index e674916..719bc12 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ safe CLI modes and non-certification boundary are documented in ## M2 data-lake guarantees - Raw persists exact provider bytes through lake-local staging and atomic rename. Its integrity anchor binds source, request, UTC collection time, object/key path identity, SHA-256 and the30-day retention policy. A crash-released process lock and immutable key claim make concurrent writes, crash recovery and cleanup serialize on the same idempotency key. Every write, read and cleanup rejects path escapes and Windows reparse points below the lake root. -- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. Capture epochs persist`PREPARED`before snapshot publication and finish as`COMMITTED`or`ABORTED`; startup uses the frozen stream configuration as an independent identity anchor, validates all PREPARED and terminal records、journal parts、Raw lineage and snapshot identity, rejects conflicting terminal states, and reconciles unresolved transactions before opening network connections. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. +- Normalized requires resolvable, hash-verified Raw references and writes only frozen`standard/v2`Arrow schemas under`provider/venue/event_type/date/instrument`partitions. Capture epochs persist`PREPARED`before snapshot publication and finish as`COMMITTED`or`ABORTED`; startup uses the frozen stream configuration as an independent identity anchor, enforces closed terminal JSON fields and strict types, recomputes partition rows, logical hashes, the available-time maximum and the final L2 state from the immutable journal, and rejects any receipt bound to a different snapshot before network startup. A sharded persistent claim index binds every lake-wide`event_id`to its Arrow-normalized logical event hash. Same-ID/same-content reuse is idempotent; conflicting content, bad sequences and L2 reconstruction failures cannot enter research snapshots. - The certified Curated entry is`curate_trade_bars_from_snapshot`: it reads trades from one explicit verified Normalized snapshot, constructs session-aware bars and binds the exact lineage. One`dataset+revision_id`maps to one snapshot; corrected data requires a new revision and never overwrites history. - Normalized and Curated snapshot identities bind Arrow-canonical logical rows and physical Parquet hashes. DuckDB verifies the fixed snapshot, copies Arrow data into in-memory tables, then disables external access; user SQL cannot call file readers or resolve`latest`/`main`. - Collection stops with a visible`COLLECTION_STOPPED`error if hot data would exceed150GB or free space would fall below`max(volume*20%,100GB)`. diff --git a/docs/m7-crypto-l2-capture.md b/docs/m7-crypto-l2-capture.md index 51d1e6d..f44c7c0 100644 --- a/docs/m7-crypto-l2-capture.md +++ b/docs/m7-crypto-l2-capture.md @@ -56,8 +56,11 @@ existing strict Arrow-batch path, PIT checks, schemas, quarantine rules and Raw finalize attempt persists an immutable`PREPARED`transaction before publishing a visible snapshot, then ends in a content-addressed`COMMITTED`receipt or`ABORTED`failure. Before any network startup, the coordinator anchors every journal to the frozen stream configuration, scans all journal -parents, validates every transaction、terminal-state conflict、journal part、Raw reference、snapshot -identity and path, and idempotently replays unresolved`PREPARED`or retryable`ABORTED`transactions. +parents, enforces closed JSON fields, strict types and filename attempt binding for every terminal +record, then recomputes partition rows, logical hashes, the available-time maximum and the final L2 +state from the immutable journal. A receipt that points to another individually valid snapshot is +rejected before network startup. Unresolved`PREPARED`or retryable`ABORTED`transactions replay +idempotently. A real spawned-process test terminates with`os._exit`after snapshot publication but before receipt publication and proves that a fresh process commits the transaction before any network runner is created. A transaction without a durable PREPARED identity blocks startup instead of being skipped. diff --git a/src/quant_data_kit/_version.py b/src/quant_data_kit/_version.py index 30d9986..8821bf5 100644 --- a/src/quant_data_kit/_version.py +++ b/src/quant_data_kit/_version.py @@ -1,3 +1,3 @@ """Single authoritative package version used by builds and runtime imports.""" -__version__ = "0.7.3" +__version__ = "0.7.4" diff --git a/src/quant_data_kit/capture_v2/epoch.py b/src/quant_data_kit/capture_v2/epoch.py index 23a266f..fb5a5d2 100644 --- a/src/quant_data_kit/capture_v2/epoch.py +++ b/src/quant_data_kit/capture_v2/epoch.py @@ -15,6 +15,7 @@ import orjson import pyarrow as pa +import pyarrow.parquet as pq from quant_data_kit import normalized_v3 from quant_data_kit.capture_v2.models import canonical_json_bytes, utc_text @@ -46,6 +47,95 @@ "book_delta": BOOK_DELTA_EVENT_SCHEMA_ID, "book_snapshot": BOOK_SNAPSHOT_EVENT_SCHEMA_ID, } +_SHA256_HEX_LENGTH = 64 +_PREPARED_FIELDS = frozenset( + { + "schema_version", + "transaction_state", + "attempt", + "epoch_id", + "stream_id", + "provider", + "venue", + "created_at", + "records", + "raw_references", + "journal_parts", + "policy", + "prepared_sha256", + } +) +_RECEIPT_FIELDS = frozenset( + { + "schema_version", + "transaction_state", + "prepared_sha256", + "epoch_id", + "stream_id", + "provider", + "venue", + "created_at", + "records", + "raw_segments", + "raw_references", + "journal_parts", + "policy", + "normalized_snapshot_id", + "accepted_rows", + "quarantined_rows", + "receipt_sha256", + } +) +_ABORT_FIELDS = frozenset( + { + "schema_version", + "transaction_state", + "prepared_sha256", + "epoch_id", + "stream_id", + "provider", + "venue", + "created_at", + "reason", + "records", + "raw_references", + "journal_parts", + "policy", + "retryable", + "abort_sha256", + } +) +_FAILURE_FIELDS = frozenset( + { + "schema_version", + "transaction_state", + "prepared_sha256", + "epoch_id", + "stream_id", + "provider", + "venue", + "created_at", + "attempt", + "exception", + "message", + "records", + "raw_references", + "journal_parts", + "policy", + "published_snapshot_id", + "accepted_rows", + "quarantined_rows", + "retryable_in_process", + "restart_recovery", + "failure_sha256", + } +) +_TERMINAL_FIELDS = { + "puresaber.normalized-epoch-receipt@1.3.0": _RECEIPT_FIELDS, + "puresaber.normalized-epoch-abort@1.3.0": _ABORT_FIELDS, + "puresaber.normalized-epoch-finalize-failure@1.2.0": _FAILURE_FIELDS, +} +_RESTART_RECOVERY = "reconcile PREPARED/ABORTED transaction idempotently" @dataclass(frozen=True) @@ -116,6 +206,8 @@ def _load_hashed_json( *, hash_field: str, description: str, + filename_prefix: str | None = None, + sequence_field: str | None = None, ) -> dict[str, Any]: checked = _validate_safe_path(hot_root, path, allow_missing=False) try: @@ -125,14 +217,57 @@ def _load_hashed_json( if not isinstance(payload, dict): raise ValidationError(f"{description} must be a JSON object") digest = payload.pop(hash_field, None) + if not _is_sha256_hex(digest): + raise ValidationError(f"{description} hash changed") if digest != hashlib.sha256(canonical_json_bytes(payload)).hexdigest(): raise ValidationError(f"{description} hash changed") - if f"sha256-{digest}" not in checked.name: + if filename_prefix is None: + expected_name = None + elif sequence_field is None: + expected_name = f"{filename_prefix}sha256-{digest}.json" + else: + sequence = payload.get(sequence_field) + expected_name = ( + f"{filename_prefix}{sequence:04d}-sha256-{digest}.json" + if _is_positive_int(sequence) + else None + ) + if expected_name is not None and checked.name != expected_name: raise ValidationError(f"{description} filename hash changed") payload[hash_field] = digest return payload +def _is_positive_int(value: object) -> bool: + return not isinstance(value, bool) and isinstance(value, int) and value > 0 + + +def _is_nonnegative_int(value: object) -> bool: + return not isinstance(value, bool) and isinstance(value, int) and value >= 0 + + +def _is_sha256_hex(value: object) -> bool: + return ( + isinstance(value, str) + and len(value) == _SHA256_HEX_LENGTH + and all(character in "0123456789abcdef" for character in value) + ) + + +def _is_snapshot_id(value: object) -> bool: + return isinstance(value, str) and value.startswith("sha256-") and _is_sha256_hex(value[7:]) + + +def _require_closed_fields( + payload: Mapping[str, Any], expected: frozenset[str], description: str +) -> None: + actual = frozenset(payload) + if actual != expected: + missing = sorted(expected.difference(actual)) + unknown = sorted(actual.difference(expected)) + raise ValidationError(f"{description} fields changed: missing={missing}, unknown={unknown}") + + def _load_epoch_parts(hot_root: Path, root: Path) -> tuple[EpochPart, ...]: parts: list[EpochPart] = [] for path in _validated_glob(hot_root, root, "part-*-sha256-*.ndjson"): @@ -202,6 +337,11 @@ def _validate_prepared_binding( policy: StoragePolicy, actual_parts: tuple[EpochPart, ...], ) -> tuple[RawObjectReference, ...]: + _require_closed_fields( + payload, + _PREPARED_FIELDS, + "Normalized epoch PREPARED transaction", + ) expected_parts = [asdict(item) for item in actual_parts] attempt = payload.get("attempt") if ( @@ -212,9 +352,8 @@ def _validate_prepared_binding( or payload.get("provider") != provider or payload.get("venue") != venue or payload.get("policy") != asdict(policy) - or isinstance(attempt, bool) - or not isinstance(attempt, int) - or attempt < 1 + or not _is_positive_int(attempt) + or not _is_sha256_hex(payload.get("prepared_sha256")) ): raise ValidationError("Normalized epoch PREPARED transaction identity changed") _parse_created_at(payload.get("created_at"), "Normalized epoch PREPARED transaction") @@ -248,6 +387,10 @@ def _validate_terminal_binding( schema_version: str, description: str, ) -> tuple[RawObjectReference, ...]: + expected_fields = _TERMINAL_FIELDS.get(schema_version) + if expected_fields is None: + raise ValidationError(f"{description} schema version is unsupported") + _require_closed_fields(payload, expected_fields, description) expected_identity = { "epoch_id": epoch_id, "stream_id": stream_id, @@ -261,6 +404,46 @@ def _validate_terminal_binding( payload.get(key) != value for key, value in expected_identity.items() ): raise ValidationError(f"{description} identity changed") + prepared_sha256 = payload.get("prepared_sha256") + if prepared_sha256 is not None and not _is_sha256_hex(prepared_sha256): + raise ValidationError(f"{description} PREPARED hash is malformed") + if schema_version == "puresaber.normalized-epoch-receipt@1.3.0": + if ( + payload.get("transaction_state") != "COMMITTED" + or not _is_sha256_hex(prepared_sha256) + or not _is_sha256_hex(payload.get("receipt_sha256")) + ): + raise ValidationError(f"{description} identity changed") + elif schema_version == "puresaber.normalized-epoch-abort@1.3.0": + if ( + payload.get("transaction_state") != "ABORTED" + or payload.get("retryable") is not False + or not isinstance(payload.get("reason"), str) + or not payload.get("reason") + or not _is_sha256_hex(payload.get("abort_sha256")) + ): + raise ValidationError(f"{description} identity changed") + else: + if ( + payload.get("transaction_state") != "ABORTED" + or payload.get("retryable_in_process") is not True + or not _is_positive_int(payload.get("attempt")) + or not isinstance(payload.get("exception"), str) + or not payload.get("exception") + or not isinstance(payload.get("message"), str) + or payload.get("restart_recovery") != _RESTART_RECOVERY + or not _is_sha256_hex(payload.get("failure_sha256")) + ): + raise ValidationError(f"{description} is not recoverable") + published_snapshot_id = payload.get("published_snapshot_id") + if published_snapshot_id is not None and not _is_snapshot_id(published_snapshot_id): + raise ValidationError(f"{description} snapshot identity is malformed") + row_state = (payload.get("accepted_rows"), payload.get("quarantined_rows")) + if published_snapshot_id is None: + if row_state != (None, None): + raise ValidationError(f"{description} snapshot state changed") + elif not all(_is_nonnegative_int(value) for value in row_state): + raise ValidationError(f"{description} snapshot state changed") _parse_created_at(payload.get("created_at"), description) records = sum(item.rows for item in actual_parts) recorded = payload.get("records") @@ -280,12 +463,143 @@ def _validate_terminal_binding( return references +class _CanonicalRowsDigest: + def __init__(self) -> None: + self._digest = hashlib.sha256(b"[") + self._has_rows = False + + def update(self, rows: list[dict[str, Any]]) -> None: + if not rows: + return + encoded = canonical_json_bytes(rows) + if encoded[:1] != b"[" or encoded[-1:] != b"]": + raise ValidationError("Normalized epoch canonical row encoding changed") + if self._has_rows: + self._digest.update(b",") + self._digest.update(encoded[1:-1]) + self._has_rows = True + + def hexdigest(self) -> str: + digest = self._digest.copy() + digest.update(b"]") + return digest.hexdigest() + + +@dataclass +class _ExpectedPartitionBinding: + rows: int + digest: _CanonicalRowsDigest + + +def _expected_snapshot_binding( + hot_root: Path, + journal_root: Path, + parts: tuple[EpochPart, ...], + *, + provider: str, +) -> tuple[ + dict[tuple[str, str, str, str], tuple[int, str]], + str | None, + tuple[tuple[str, str, str, int, str], ...], +]: + expected: dict[tuple[str, str, str, str], _ExpectedPartitionBinding] = {} + last_sequences: dict[tuple[str, str, str, str], int] = {} + books: dict[tuple[str, str, str], Any] = {} + reached_l2: dict[tuple[str, str, str], set[int]] = {} + latest_available: datetime | None = None + input_rows = 0 + source_batches = _iter_epoch_record_batches( + journal_root, + parts, + trusted_root=hot_root, + ) + for batch in normalized_v3._iter_atomic_l2_record_batches(source_batches): + identity, _first_sort_key, _last_sort_key = normalized_v3._validate_record_batch( + batch, + provider=provider, + input_offset=input_rows, + last_sequences=last_sequences, + books=books, + expected_l2={}, + reached_l2=reached_l2, + ) + key = ( + identity.schema_id, + identity.event_type, + identity.trading_date, + identity.instrument_id, + ) + binding = expected.get(key) + if binding is None: + binding = _ExpectedPartitionBinding(0, _CanonicalRowsDigest()) + expected[key] = binding + binding.digest.update(normalized_v3._logical_batch_rows(batch, identity.schema_id)) + binding.rows += batch.num_rows + input_rows += batch.num_rows + if latest_available is None or identity.latest_available > latest_available: + latest_available = identity.latest_available + partitions = { + key: (binding.rows, binding.digest.hexdigest()) for key, binding in expected.items() + } + checkpoints = tuple( + ( + stream_key[0], + stream_key[1], + stream_key[2], + int(book.sequence), + book.checkpoint().state_sha256, + ) + for stream_key, book in sorted(books.items()) + if book.sequence is not None + ) + created_at = ( + utc_text(latest_available, "available_at") if latest_available is not None else None + ) + return partitions, created_at, checkpoints + + +def _actual_snapshot_partitions( + hot_root: Path, + snapshot_id: str, + snapshot: Any, +) -> dict[tuple[str, str, str, str], tuple[int, str]]: + actual: dict[tuple[str, str, str, str], tuple[int, str]] = {} + snapshot_root = Path(hot_root) / "normalized" / "snapshots" / snapshot_id + for partition in snapshot.partitions: + path = _validate_safe_path( + hot_root, + snapshot_root / partition.relative_path, + allow_missing=False, + ) + digest = _CanonicalRowsDigest() + rows = 0 + parquet = pq.ParquetFile(path) + try: + for batch in parquet.iter_batches(batch_size=_ARROW_BATCH_ROWS): + digest.update(normalized_v3._logical_batch_rows(batch, partition.schema_id)) + rows += batch.num_rows + finally: + parquet.close() + key = ( + partition.schema_id, + partition.event_type, + partition.trading_date, + partition.instrument_id, + ) + if key in actual: + raise ValidationError("Normalized snapshot contains duplicate logical partitions") + actual[key] = (rows, digest.hexdigest()) + return actual + + def _validate_snapshot_binding( hot_root: Path, payload: Mapping[str, Any], *, references: tuple[RawObjectReference, ...], description: str, + journal_root: Path | None = None, + parts: tuple[EpochPart, ...] | None = None, ) -> None: values = tuple(payload.get(key) for key in ("records", "accepted_rows", "quarantined_rows")) if any(isinstance(value, bool) or not isinstance(value, int) for value in values): @@ -298,7 +612,7 @@ def _validate_snapshot_binding( if accepted: raise ValidationError(f"{description} snapshot identity is missing") return - if not isinstance(snapshot_id, str): + if not _is_snapshot_id(snapshot_id): raise ValidationError(f"{description} snapshot identity is malformed") snapshot = normalized_v3.load_normalized_snapshot_v3(hot_root, snapshot_id) if ( @@ -308,6 +622,31 @@ def _validate_snapshot_binding( or snapshot.upstream_raw_references != references ): raise ValidationError(f"{description} snapshot identity changed") + if journal_root is None or parts is None: + raise ValidationError(f"{description} lacks its journal content binding") + expected_partitions, expected_created_at, expected_checkpoints = _expected_snapshot_binding( + hot_root, + journal_root, + parts, + provider=str(payload.get("provider")), + ) + actual_partitions = _actual_snapshot_partitions(hot_root, snapshot_id, snapshot) + actual_checkpoints = tuple( + ( + item.source, + item.instrument_id, + item.session_id, + item.sequence, + item.state_sha256, + ) + for item in snapshot.l2_checkpoints + ) + if ( + expected_partitions != actual_partitions + or expected_created_at != snapshot.created_at + or expected_checkpoints != actual_checkpoints + ): + raise ValidationError(f"{description} does not match its journal content") def _open_journal_file(hot_root: Path, path: Path, mode: str): @@ -480,6 +819,8 @@ def recover( path, hash_field="prepared_sha256", description="Normalized epoch PREPARED transaction", + filename_prefix="transaction-prepared-", + sequence_field="attempt", ) for path in prepared_paths ) @@ -503,6 +844,7 @@ def recover( path, hash_field="receipt_sha256", description="Normalized epoch receipt", + filename_prefix="receipt-", ) for path in receipts ) @@ -541,6 +883,8 @@ def recover( item, references=references, description="Normalized epoch COMMITTED receipt", + journal_root=root, + parts=actual_parts, ) terminal_prepared.append(str(item["prepared_sha256"])) abort_payloads = tuple( @@ -549,6 +893,7 @@ def recover( path, hash_field="abort_sha256", description="Normalized epoch explicit ABORTED transaction", + filename_prefix="aborted-", ) for path in explicit_aborts ) @@ -593,6 +938,8 @@ def recover( path, hash_field="failure_sha256", description="Normalized epoch failure record", + filename_prefix="finalize-failure-", + sequence_field="attempt", ) for path in failures ) @@ -635,6 +982,8 @@ def recover( }, references=references, description="Normalized epoch failure record", + journal_root=root, + parts=actual_parts, ) elif item.get("accepted_rows") is not None or item.get("quarantined_rows") is not None: raise ValidationError("Normalized epoch failure snapshot state changed") @@ -762,6 +1111,8 @@ def reconcile_pending( path, hash_field="prepared_sha256", description="Normalized epoch PREPARED transaction", + filename_prefix="transaction-prepared-", + sequence_field="attempt", ) for path in prepared_paths ) @@ -792,6 +1143,7 @@ def reconcile_pending( path, hash_field="receipt_sha256", description="Normalized epoch receipt", + filename_prefix="receipt-", ) prepared = prepared_by_hash.get(str(item.get("prepared_sha256"))) if ( @@ -828,6 +1180,8 @@ def reconcile_pending( item, references=references, description="Normalized epoch COMMITTED receipt", + journal_root=epoch_root, + parts=actual_parts, ) receipt_payloads.append(item) terminal_prepared.append(str(item["prepared_sha256"])) @@ -839,6 +1193,7 @@ def reconcile_pending( path, hash_field="abort_sha256", description="Normalized epoch explicit ABORTED transaction", + filename_prefix="aborted-", ) prepared_sha256 = item.get("prepared_sha256") prepared = ( @@ -881,6 +1236,8 @@ def reconcile_pending( path, hash_field="failure_sha256", description="Normalized epoch failure record", + filename_prefix="finalize-failure-", + sequence_field="attempt", ) prepared_sha256 = item.get("prepared_sha256") prepared = ( @@ -924,6 +1281,8 @@ def reconcile_pending( }, references=references, description="Normalized epoch failure record", + journal_root=epoch_root, + parts=actual_parts, ) elif ( item.get("accepted_rows") is not None @@ -1074,6 +1433,8 @@ def _prepare_transaction(self, created_at: str) -> dict[str, Any]: path, hash_field="prepared_sha256", description="Normalized epoch PREPARED transaction", + filename_prefix="transaction-prepared-", + sequence_field="attempt", ) if reloaded != payload: raise ValidationError("Normalized epoch PREPARED transaction reload mismatch") @@ -1114,6 +1475,7 @@ def _write_committed_receipt( receipt_path, hash_field="receipt_sha256", description="Normalized epoch receipt", + filename_prefix="receipt-", ) if reloaded != payload: raise ValidationError("Normalized epoch receipt reload mismatch") @@ -1240,7 +1602,7 @@ def _record_finalize_failure( "accepted_rows": result.accepted_rows if result is not None else None, "quarantined_rows": result.quarantined_rows if result is not None else None, "retryable_in_process": True, - "restart_recovery": "reconcile PREPARED/ABORTED transaction idempotently", + "restart_recovery": _RESTART_RECOVERY, } digest = hashlib.sha256(canonical_json_bytes(identity)).hexdigest() path = self.root / (f"finalize-failure-{self._finalize_failures:04d}-sha256-{digest}.json") diff --git a/tests/test_capture_v2_remediation.py b/tests/test_capture_v2_remediation.py index 7b2e3c6..2fb9e3e 100644 --- a/tests/test_capture_v2_remediation.py +++ b/tests/test_capture_v2_remediation.py @@ -1554,13 +1554,13 @@ def test_epoch_snapshot_binding_allows_zero_accepted_rows_without_snapshot( ) -def test_epoch_recovery_rejects_duplicate_prepared_transactions(tmp_path: Path) -> None: +def test_epoch_recovery_rejects_prepared_filename_attempt_mismatch(tmp_path: Path) -> None: journal = _failed_epoch_for_recovery(tmp_path, "duplicate-prepared") prepared = next(journal.root.glob("transaction-prepared-*.json")) duplicate = prepared.with_name(prepared.name.replace("prepared-0001-", "prepared-9999-")) duplicate.write_bytes(prepared.read_bytes()) - with pytest.raises(ValidationError, match="duplicate PREPARED"): + with pytest.raises(ValidationError, match="filename hash changed"): NormalizedEpochJournal.recover( journal.hot_root, epoch_id=journal.epoch_id, @@ -1570,7 +1570,7 @@ def test_epoch_recovery_rejects_duplicate_prepared_transactions(tmp_path: Path) storage_guard=journal.storage_guard, policy=journal.policy, ) - with pytest.raises(ValidationError, match="duplicate PREPARED"): + with pytest.raises(ValidationError, match="filename hash changed"): NormalizedEpochJournal.reconcile_pending( journal.hot_root, expected_streams=_identity_anchor(journal), @@ -1579,6 +1579,244 @@ def test_epoch_recovery_rejects_duplicate_prepared_transactions(tmp_path: Path) ) +def test_epoch_receipt_cannot_rebind_a_different_valid_snapshot(tmp_path: Path) -> None: + journal = _journal_with_lineage(tmp_path, "snapshot-rebind") + receipt = journal.finalize(created_at=epoch_fixtures.NOW) + assert receipt.normalized_snapshot_id is not None + original = epoch_module.normalized_v3.load_normalized_snapshot_v3( + journal.hot_root, + receipt.normalized_snapshot_id, + ) + batches = [] + changed = False + source_batches = epoch_module._iter_epoch_record_batches( + journal.root, + receipt.journal_parts, + trusted_root=journal.hot_root, + ) + for batch in source_batches: + rows = batch.to_pylist() + if not changed: + rows[0]["event_id"] = f"{rows[0]['event_id']}-forged" + changed = True + batches.append(epoch_module.pa.RecordBatch.from_pylist(rows, schema=batch.schema)) + forged = epoch_module.write_normalized_batches( + journal.hot_root, + batches, + provider=journal.provider, + venue=journal.venue, + upstream_raw_references=receipt.raw_references, + policy=journal.policy, + ) + assert forged.snapshot is not None + assert forged.snapshot.snapshot_id != original.snapshot_id + receipt_path = next(journal.root.glob("receipt-sha256-*.json")) + _rewrite_content_addressed( + receipt_path, + "receipt_sha256", + normalized_snapshot_id=forged.snapshot.snapshot_id, + ) + + with pytest.raises(ValidationError, match="does not match its journal content"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + expected_streams=_identity_anchor(journal), + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +@pytest.mark.parametrize( + ("artifact", "changes"), + ( + ("prepared", {"unexpected_field": True}), + ("receipt", {"unexpected_field": True}), + ("abort", {"unexpected_field": True}), + ("failure", {"unexpected_field": True}), + ("failure", {"exception": []}), + ("failure", {"message": {}}), + ("failure", {"restart_recovery": 0}), + ), +) +def test_epoch_terminal_json_contracts_are_closed_and_strict( + tmp_path: Path, + artifact: str, + changes: dict[str, object], +) -> None: + root = tmp_path / f"{artifact}-{next(iter(changes))}" + if artifact == "receipt": + journal = _journal_with_lineage(root, "closed-receipt") + journal.finalize(created_at=epoch_fixtures.NOW) + path = next(journal.root.glob("receipt-sha256-*.json")) + _rewrite_content_addressed(path, "receipt_sha256", **changes) + elif artifact == "abort": + root.mkdir(parents=True) + hot, _archive, guard = epoch_fixtures.storage(root) + journal = NormalizedEpochJournal( + hot, + epoch_id="closed-abort", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + path = journal.abort_visible("operator") + _rewrite_content_addressed(path, "abort_sha256", **changes) + else: + journal = _failed_epoch_for_recovery(root, f"closed-{artifact}") + if artifact == "prepared": + path = next(journal.root.glob("transaction-prepared-*.json")) + _rewrite_content_addressed(path, "prepared_sha256", **changes) + else: + _rewrite_failure(journal, **changes) + + with pytest.raises(ValidationError, match="fields changed|not recoverable"): + NormalizedEpochJournal.reconcile_pending( + journal.hot_root, + expected_streams=_identity_anchor(journal), + storage_guard=journal.storage_guard, + policy=journal.policy, + ) + + +def test_epoch_binding_helper_negative_branches_are_explicit(tmp_path: Path) -> None: + generic_identity = {"value": "bound"} + generic_hash = hashlib.sha256(epoch_module.canonical_json_bytes(generic_identity)).hexdigest() + generic = tmp_path / "generic.json" + generic.write_text( + json.dumps({**generic_identity, "digest": generic_hash}), + encoding="utf-8", + ) + assert ( + epoch_module._load_hashed_json( + tmp_path, + generic, + hash_field="digest", + description="generic", + )["digest"] + == generic_hash + ) + + digest = epoch_module._CanonicalRowsDigest() + digest.update([]) + digest.update([{"value": 1}]) + digest.update([{"value": 2}]) + assert len(digest.hexdigest()) == 64 + + journal = _failed_epoch_for_recovery(tmp_path / "failure", "helper-failure") + prepared = json.loads( + next(journal.root.glob("transaction-prepared-*.json")).read_text(encoding="utf-8") + ) + failure = json.loads( + next(journal.root.glob("finalize-failure-*.json")).read_text(encoding="utf-8") + ) + parts = epoch_module._load_epoch_parts(journal.hot_root, journal.root) + shared = { + "prepared": prepared, + "epoch_id": journal.epoch_id, + "stream_id": journal.stream_id, + "provider": journal.provider, + "venue": journal.venue, + "policy": journal.policy, + "actual_parts": parts, + "description": "test terminal", + } + with pytest.raises(ValidationError, match="unsupported"): + epoch_module._validate_terminal_binding( + journal.hot_root, + failure, + schema_version="unsupported", + **shared, + ) + with pytest.raises(ValidationError, match="PREPARED hash is malformed"): + epoch_module._validate_terminal_binding( + journal.hot_root, + {**failure, "prepared_sha256": "BAD"}, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + **shared, + ) + with pytest.raises(ValidationError, match="snapshot identity is malformed"): + epoch_module._validate_terminal_binding( + journal.hot_root, + {**failure, "published_snapshot_id": "bad"}, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + **shared, + ) + with pytest.raises(ValidationError, match="snapshot state changed"): + epoch_module._validate_terminal_binding( + journal.hot_root, + {**failure, "published_snapshot_id": "sha256-" + "0" * 64}, + schema_version="puresaber.normalized-epoch-finalize-failure@1.2.0", + **shared, + ) + + +def test_epoch_terminal_specific_types_and_required_journal_binding(tmp_path: Path) -> None: + committed = _journal_with_lineage(tmp_path / "receipt", "helper-receipt") + committed_receipt = committed.finalize(created_at=epoch_fixtures.NOW) + receipt = json.loads(Path(committed_receipt.receipt_path).read_text(encoding="utf-8")) + prepared = json.loads( + next(committed.root.glob("transaction-prepared-*.json")).read_text(encoding="utf-8") + ) + parts = epoch_module._load_epoch_parts(committed.hot_root, committed.root) + with pytest.raises(ValidationError, match="identity changed"): + epoch_module._validate_terminal_binding( + committed.hot_root, + {**receipt, "transaction_state": "BROKEN"}, + prepared=prepared, + epoch_id=committed.epoch_id, + stream_id=committed.stream_id, + provider=committed.provider, + venue=committed.venue, + policy=committed.policy, + actual_parts=parts, + schema_version="puresaber.normalized-epoch-receipt@1.3.0", + description="test receipt", + ) + references = epoch_module._validate_raw_references( + committed.hot_root, + receipt["raw_references"], + description="test receipt", + ) + with pytest.raises(ValidationError, match="lacks its journal content binding"): + epoch_module._validate_snapshot_binding( + committed.hot_root, + receipt, + references=references, + description="test receipt", + ) + + abort_root = tmp_path / "abort" + abort_root.mkdir(parents=True) + hot, _archive, guard = epoch_fixtures.storage(abort_root) + aborted = NormalizedEpochJournal( + hot, + epoch_id="helper-abort", + stream_id="stream", + provider="binance", + venue="BINANCE", + storage_guard=guard, + policy=epoch_fixtures.POLICY, + ) + abort = json.loads(aborted.abort_visible("operator").read_text(encoding="utf-8")) + abort_parts = epoch_module._load_epoch_parts(aborted.hot_root, aborted.root) + with pytest.raises(ValidationError, match="identity changed"): + epoch_module._validate_terminal_binding( + aborted.hot_root, + {**abort, "reason": ""}, + prepared=None, + epoch_id=aborted.epoch_id, + stream_id=aborted.stream_id, + provider=aborted.provider, + venue=aborted.venue, + policy=aborted.policy, + actual_parts=abort_parts, + schema_version="puresaber.normalized-epoch-abort@1.3.0", + description="test abort", + ) + + def test_epoch_reconcile_rejects_missing_anchor_open_part_and_orphan_journal( tmp_path: Path, ) -> None: diff --git a/tests/test_m2_integration.py b/tests/test_m2_integration.py index 7806b6e..2b042a2 100644 --- a/tests/test_m2_integration.py +++ b/tests/test_m2_integration.py @@ -37,7 +37,7 @@ def crypto_context(provider: str) -> qdk.AdapterContext: def test_public_m2_api_and_version_are_exposed() -> None: - assert qdk.__version__ == version("quant-data-kit") == "0.7.3" + assert qdk.__version__ == version("quant-data-kit") == "0.7.4" for name in ( "write_raw_bytes", "write_normalized_events", From 5b15c2c26a5a2f2b125e912d7f9412caf477b31c Mon Sep 17 00:00:00 2001 From: Neko65536 Date: Sun, 30 Aug 2026 21:55:37 +0800 Subject: [PATCH 16/16] test: certify epoch journal binding remediation --- .../m7-capture-remediation-v5/.gitattributes | 1 + ...a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt | 18 + ...888db0fc7d5adb62dd13639754d9be9a81643.json | 1 + ...2a7420559968901e4d05696b1541c0c00aff5.json | 1 + ...99614881b1a3861f05bdda080a8ffb87475df.json | 37 + ...94163e0595e3800488b559c194e1878db6958.json | 703 ++++++++++++++++++ ...28a2d89f1de9219f8a511bba66df5b2321495.json | 1 + ...38d99ea3fbc25c9dc081fb0012144d1373866.json | 1 + ...d4b726d0bdb54a51184ecc4e96495f857d273.json | 1 + ...13bd6dfca915e0643cc17de6c139cdce999b3.json | 1 + ...c46ffa1d8336945a87f807b6cf68847dbc9b09.txt | 1 + ...a222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml | 1 + ...3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml | 1 + ...23fca9218d1031dbe5a7b754092f9a156b4f18.txt | 1 + ...ea539245576e1e61cf368219dab32d2dba8315.txt | 1 + ...a915b97f190e344a7e99dc1c14abf55efd110.json | 1 + ...75ad51ee16461ade9559ffac98b2cf8d2b758.json | 1 + ...c220c4b59b124c5ee90225458ba7e01708350.json | 1 + .../evidence-manifest.json | 42 ++ .../m7-capture-remediation-v5/summary.md | 103 +++ .../technical-handoff.md | 58 ++ 21 files changed, 976 insertions(+) create mode 100644 validation/m7-capture-remediation-v5/.gitattributes create mode 100644 validation/m7-capture-remediation-v5/artifacts/branch-gates-sha256-b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt create mode 100644 validation/m7-capture-remediation-v5/artifacts/capacity-preflight-refusal-sha256-14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/capacity-run-refusal-sha256-c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/cli-invocation-results-sha256-3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/data-10m-3run-sha256-4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/dense-round-01-sha256-8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/dense-round-02-sha256-20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/dense-round-03-sha256-d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/full-coverage-sha256-00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/pip-check-sha256-9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09.txt create mode 100644 validation/m7-capture-remediation-v5/artifacts/pytest-hardexit-junit-sha256-c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml create mode 100644 validation/m7-capture-remediation-v5/artifacts/pytest-main-junit-sha256-1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml create mode 100644 validation/m7-capture-remediation-v5/artifacts/ruff-check-sha256-82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18.txt create mode 100644 validation/m7-capture-remediation-v5/artifacts/ruff-format-sha256-cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315.txt create mode 100644 validation/m7-capture-remediation-v5/artifacts/sparse-round-01-sha256-f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/sparse-round-02-sha256-ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758.json create mode 100644 validation/m7-capture-remediation-v5/artifacts/sparse-round-03-sha256-116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350.json create mode 100644 validation/m7-capture-remediation-v5/evidence-manifest.json create mode 100644 validation/m7-capture-remediation-v5/summary.md create mode 100644 validation/m7-capture-remediation-v5/technical-handoff.md diff --git a/validation/m7-capture-remediation-v5/.gitattributes b/validation/m7-capture-remediation-v5/.gitattributes new file mode 100644 index 0000000..1195c21 --- /dev/null +++ b/validation/m7-capture-remediation-v5/.gitattributes @@ -0,0 +1 @@ +artifacts/* -text diff --git a/validation/m7-capture-remediation-v5/artifacts/branch-gates-sha256-b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt b/validation/m7-capture-remediation-v5/artifacts/branch-gates-sha256-b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt new file mode 100644 index 0000000..4c267f7 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/branch-gates-sha256-b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt @@ -0,0 +1,18 @@ +src/quant_data_kit/normalized_v3.py: 498/548=90.88% (required>=90%) +src/quant_data_kit/data_lake.py: 336/372=90.32% (required>=90%) +src/quant_data_kit/curated.py: 94/100=94.00% (required>=90%) +src/quant_data_kit/process_lock.py: 8/8=100.00% (required>=90%) +src/quant_data_kit/schemas_v2.py: 103/108=95.37% (required>=90%) +src/quant_data_kit/l2_replay.py: 103/106=97.17% (required>=90%) +src/quant_data_kit/adapters_v2/base.py: 30/32=93.75% (required>=90%) +src/quant_data_kit/adapters_v2/binance.py: 21/22=95.45% (required>=90%) +src/quant_data_kit/adapters_v2/okx.py: 48/52=92.31% (required>=90%) +src/quant_data_kit/adapters_v2/cn_neutral.py: 10/10=100.00% (required>=90%) +src/quant_data_kit/capture_v2/models.py: 83/90=92.22% (required>=90%) +src/quant_data_kit/capture_v2/storage.py: 125/136=91.91% (required>=90%) +src/quant_data_kit/capture_v2/synchronizers.py: 90/90=100.00% (required>=90%) +src/quant_data_kit/capture_v2/epoch.py: 251/276=90.94% (required>=90%) +src/quant_data_kit/capture_v2/transport.py: 12/12=100.00% (required>=90%) +src/quant_data_kit/capture_v2/collector.py: 85/94=90.43% (required>=90%) +src/quant_data_kit/capture_v2/cli.py: 37/38=97.37% (required>=90%) +ALL src/quant_data_kit: 2217/2546=87.08% (required>=80%) diff --git a/validation/m7-capture-remediation-v5/artifacts/capacity-preflight-refusal-sha256-14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643.json b/validation/m7-capture-remediation-v5/artifacts/capacity-preflight-refusal-sha256-14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643.json new file mode 100644 index 0000000..62ae7a4 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/capacity-preflight-refusal-sha256-14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","continuous_days":0,"ended_at":"2026-08-30T13:49:50.218737Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"7d67e3bf0af9a8bedb1ffa8140a96bdad13270fa92d853212670ac034bf61581","run_id":"capture-3277ade5b23b458bad3205acd8110708","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T13:49:50.214737Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363712512, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/capacity-run-refusal-sha256-c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5.json b/validation/m7-capture-remediation-v5/artifacts/capacity-run-refusal-sha256-c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5.json new file mode 100644 index 0000000..3d94d59 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/capacity-run-refusal-sha256-c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5.json @@ -0,0 +1 @@ +{"archive_preflight_receipt":null,"audit_reference_sha256":"ae196e46e2fbfd03a04b645b8860d62dab29dc73fdc41aee273383efdb8a5e45","capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","continuous_days":0,"ended_at":"2026-08-30T13:50:03.249643Z","long_running_capture_started":false,"market_data_certified":false,"providers":["binance","okx"],"report_sha256":"a4bf86a784fea977f54e218d95fce36eec4580d5f55e341418f1c5ded095b6e4","run_id":"capture-63feda962224425691b3fc8411bf0020","schema_version":"puresaber.crypto-l2-capture-run@1.1.0","started_at":"2026-08-30T13:50:03.245642Z","status":"PAUSED_PREFLIGHT_FAILED","streams":[{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"binance","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-spot-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"btc-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":0},{"absent_level_deletes":0,"accepted_rows":0,"archive_receipts":[],"archived_segments":0,"audit_chain_sha256":null,"audit_events":0,"audit_failures":0,"audit_references":[],"capability":"eth-usdt-perpetual-l2","duplicate_or_old_updates":0,"epoch_aborts":[],"epoch_receipts":[],"errors":["CapturePausedError: CAPTURE_PAUSED: archive capacity floor breached: projected=56363704320, minimum=199710735564, reserve=161061273600"],"final_state":"PAUSED","first_received_at":null,"heartbeats":0,"last_received_at":null,"normalized_epochs":0,"outcome":"FAILED","pending_raw_messages":0,"pending_raw_segments":0,"provider":"okx","quarantined_rows":0,"raw_segments":0,"resyncs":0,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":0}]} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/cli-invocation-results-sha256-3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df.json b/validation/m7-capture-remediation-v5/artifacts/cli-invocation-results-sha256-3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df.json new file mode 100644 index 0000000..db27b40 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/cli-invocation-results-sha256-3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df.json @@ -0,0 +1,37 @@ +{ + "schema_version": "puresaber.m7-cli-capacity-refusal-evidence@1.0.0", + "source_commit": "13e004a80296bb3a49c4bd54e64cb64670e56b01", + "working_tree_dirty": false, + "package_version": "0.7.4", + "config": { + "path": ".m7/m7-remediation-real-config.json", + "sha256": "996b67999f3fc4962d5757349976f825db39bf1612a12ecf1d9de857574feff6", + "archive_reserve_bytes": 161061273600 + }, + "invocations": [ + { + "argv": ["qdk-capture.exe", ".m7/m7-remediation-real-config.json", "--mode", "preflight"], + "exit_code": 2, + "run_id": "capture-3277ade5b23b458bad3205acd8110708", + "status": "PAUSED_PREFLIGHT_FAILED", + "report_sha256": "7d67e3bf0af9a8bedb1ffa8140a96bdad13270fa92d853212670ac034bf61581", + "report_file_sha256": "14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643", + "websocket_messages": 0, + "long_running_capture_started": false + }, + { + "argv": ["qdk-capture.exe", ".m7/m7-remediation-real-config.json", "--mode", "run", "--confirm-long-running"], + "exit_code": 2, + "run_id": "capture-63feda962224425691b3fc8411bf0020", + "status": "PAUSED_PREFLIGHT_FAILED", + "report_sha256": "a4bf86a784fea977f54e218d95fce36eec4580d5f55e341418f1c5ded095b6e4", + "report_file_sha256": "c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5", + "websocket_messages": 0, + "long_running_capture_started": false + } + ], + "network_started": false, + "public_messages_received": 0, + "capacity_floor_bytes": 199710735564, + "result": "PASS_FAIL_CLOSED" +} diff --git a/validation/m7-capture-remediation-v5/artifacts/data-10m-3run-sha256-4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958.json b/validation/m7-capture-remediation-v5/artifacts/data-10m-3run-sha256-4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958.json new file mode 100644 index 0000000..1fde51f --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/data-10m-3run-sha256-4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958.json @@ -0,0 +1,703 @@ +{ + "benchmark": "quant-data-kit-normalized-v3-synthetic-l2", + "environment": { + "duckdb": "1.5.5", + "git": { + "branch": "codex/cross-asset-v2-m7-data-performance", + "commit": "13e004a80296bb3a49c4bd54e64cb64670e56b01", + "dirty": false + }, + "jsonschema_rs": "0.52.0", + "logical_cpu_count": 16, + "orjson": "3.12.0", + "platform": "Windows-11-10.0.22631-SP0", + "psutil": "7.2.2", + "pyarrow": "25.0.1", + "python": "3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]", + "quant_data_kit": "0.7.4", + "temp_environment": { + "TEMP": "C:\\Users\\1\\AppData\\Local\\Temp", + "TMP": "C:\\Users\\1\\AppData\\Local\\Temp", + "tempfile_gettempdir": "C:\\Users\\1\\AppData\\Local\\Temp" + } + }, + "execution": { + "data_retention": { + "cleanup_performed": false, + "cleanup_requested": false, + "generated_bytes": 3310487778, + "work_root_exists_after": true + }, + "disk_usage_after": { + "C:\\": { + "free_bytes": 9923379200, + "total_bytes": 321320923136, + "used_bytes": 311397543936 + }, + "F:\\": { + "free_bytes": 303525740544, + "total_bytes": 594535321600, + "used_bytes": 291009581056 + }, + "H:\\": { + "free_bytes": 217425113088, + "total_bytes": 998553677824, + "used_bytes": 781128564736 + } + }, + "disk_usage_before": { + "C:\\": { + "free_bytes": 10158116864, + "total_bytes": 321320923136, + "used_bytes": 311162806272 + }, + "F:\\": { + "free_bytes": 303525740544, + "total_bytes": 594535321600, + "used_bytes": 291009581056 + }, + "H:\\": { + "free_bytes": 220736208896, + "total_bytes": 998553677824, + "used_bytes": 777817468928 + } + }, + "independent_processes": true, + "work_root": "H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7\\.m7\\v5-10m-data" + }, + "fixture": "one valid snapshot followed by same-book sequential upsert deltas", + "gates": { + "all_rows_accepted": true, + "deterministic_artifacts": true, + "maximum_peak_rss": true, + "minimum_throughput": true + }, + "input_contract": "Iterable[pyarrow.RecordBatch]", + "measurement_scope": "write_normalized_batches end-to-end from generated schema-exact RecordBatch: vector validation, PIT/sequence/L2 reconstruction, Parquet, claims, immutable publish, and verified reload; Raw admission setup excluded", + "passed": true, + "record_batch_rows": 262144, + "rows_per_run": 10000000, + "run_results": [ + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.07535939999798, + "events_per_second": 188411.34780898687, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3341967360, + "peak_rss_gib": 3.1124496459960938, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 1, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 5.699999746866524e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.990000110818073e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.253635300003225 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.300911199999973 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.130105000000185 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.4179739999999583 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 0.00010960000145132653 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4581517000005988 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.475894999999582 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6892351000024064 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.207879199999297 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 53.05773209999825, + "events_per_second": 188473.9434613024, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3333787648, + "peak_rss_gib": 3.1048316955566406, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 2, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.8000038077589124e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.370000119204633e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 13.841366299999208 + }, + "_claim_database": { + "calls": 1, + "seconds": 21.60150799999974 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.0888641999990796 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.3447400000004563 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 6.270000085351057e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4754056999991008 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4698527000000468 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6650693000010506 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 27.475570399998105 + } + }, + "strict_reload_verified": true + }, + { + "accepted_rows": 10000000, + "claim_index": { + "claim_version": "3.1.0", + "format": "streaming-parquet-v2", + "rows": 10000000, + "shards": [ + { + "logical_sha256": "5c65bc91a1a3ce62ee298fa5df7b098a9f339b13f84e73f2696c292a3467f155", + "rows": 624610, + "shard": "0" + }, + { + "logical_sha256": "019e60b745378c3393ee696334df827bf87f39a57a9fc3527e3236feb0a42073", + "rows": 625057, + "shard": "1" + }, + { + "logical_sha256": "7aece1b81f518ab08814ade82c6c5190f204b03d161f8667ab7c02454404874e", + "rows": 625543, + "shard": "2" + }, + { + "logical_sha256": "9c176b677a0b0bd2ab32f632965f2e5010cb59de3dd9333deac9849a62ae17ef", + "rows": 624009, + "shard": "3" + }, + { + "logical_sha256": "ac60d0522f25638493973825c7dfd2c8f5ac14c9b7be0290fcda33ef67f28ecc", + "rows": 624267, + "shard": "4" + }, + { + "logical_sha256": "fa565628e9b4779c80534cad30d8af9cc1d7da329a61f1885e518d124f5e04a7", + "rows": 625707, + "shard": "5" + }, + { + "logical_sha256": "8fa9c875b7b1a9824aab65ecb6ad6261c77c00b668ae500daf2ee9c9302b1a6d", + "rows": 624931, + "shard": "6" + }, + { + "logical_sha256": "8fa0e66bafe81bc289ab005027a67df228dff4fbb1ee364cdf8fb915766d3b2f", + "rows": 626182, + "shard": "7" + }, + { + "logical_sha256": "057a08eccf7aa76130d293af3808eb3599f7c3c21dbd6dc9376ca66de1611fe6", + "rows": 624581, + "shard": "8" + }, + { + "logical_sha256": "c24c20558436a79b7678445619d15de6ff9797fdbc558c604a67aa3c37a6a12e", + "rows": 625214, + "shard": "9" + }, + { + "logical_sha256": "08583e0f305469247937e3f30c191e27a491a0f52f5e33019dac0d0a6f50c293", + "rows": 625176, + "shard": "a" + }, + { + "logical_sha256": "5228165f69616f2642fef98b5315859f8b7b93d66b30b9adf68ab5a34384b880", + "rows": 625646, + "shard": "b" + }, + { + "logical_sha256": "7eb3ce01b216500bf447abd83295717ae37e5223fb3643e798f807b95109c491", + "rows": 624807, + "shard": "c" + }, + { + "logical_sha256": "56bef2b5c16b9b0a9bcb599eca09c6f5daa65b50e77bf8d461a0f50009e7a596", + "rows": 625371, + "shard": "d" + }, + { + "logical_sha256": "4450b33660421503337dfa7ec6597cccb70563b23c8319d192773e4fe56a8bc0", + "rows": 624799, + "shard": "e" + }, + { + "logical_sha256": "3e8c3fdafd4070cb9b93e9c1ae3e2434b9549b7d42dd378cbce1f0f7cabd7f87", + "rows": 624100, + "shard": "f" + } + ] + }, + "elapsed_seconds": 54.91574480000054, + "events_per_second": 182097.1387426198, + "final_l2_checkpoint": { + "instrument_id": "BTC-USDT-SPOT", + "sequence": 10000000, + "session_id": "binance-24x7-BTC-USDT-SPOT", + "source": "binance", + "state_sha256": "3b4334614477d065224e446933cf5084c16b8c63caf17db7e2ffdb34cbb9710c" + }, + "partition_manifests": [ + { + "content_sha256": "a1a4cca6beeb45cd154469f885d76674d0986ab34fea67802e02e86138cf5eaf", + "event_type": "book_delta", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "d9afdc8f75d80c72b1776ab1e51334214b14605c61b850e434038875205fc261", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_delta/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 9999999, + "schema_id": "puresaber.book-delta-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + }, + { + "content_sha256": "d3bb612cc544a65e91cf519f23d255ddddc946c058bc0297ecc863491ce84df7", + "event_type": "book_snapshot", + "instrument_id": "BTC-USDT-SPOT", + "logical_sha256": "63084efe6baa4556f7c63dc5aeeb5acc9af83208557399d5f0d6bb86c2b07f64", + "provider": "binance", + "relative_path": "provider=binance/venue=BINANCE/event_type=book_snapshot/date=2026-01-02/instrument=BTC-USDT-SPOT/data.parquet", + "rows": 1, + "schema_id": "puresaber.book-snapshot-event", + "trading_date": "2026-01-02", + "venue": "BINANCE" + } + ], + "peak_rss_bytes": 3366998016, + "peak_rss_gib": 3.135761260986328, + "quarantined_rows": 0, + "retained_bytes": 1103495926, + "rows": 10000000, + "run": 3, + "snapshot_id": "sha256-bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_logical_sha256": "bc73be94fc984ec61fa6874b15b278a68a3b1e791919eb0fe434428c0d59bb6f", + "snapshot_manifest_sha256": "16c1b30dea551950c8d2f564c2adfab5a9f2c11ef83c8f895b90c6d5cbee58e4", + "stage_timings": { + "_InputSpool.flush": { + "calls": 0, + "seconds": 0.0 + }, + "_JsonArrayDigest.update": { + "calls": 0, + "seconds": 0.0 + }, + "_OpenPartition.flush": { + "calls": 4, + "seconds": 4.699999408330768e-06 + }, + "_arrow_ready_rows": { + "calls": 0, + "seconds": 0.0 + }, + "_assert_lake_wide_claims": { + "calls": 1, + "seconds": 6.660000144620426e-05 + }, + "_build_claim_index_files": { + "calls": 1, + "seconds": 14.524034699999902 + }, + "_claim_database": { + "calls": 1, + "seconds": 22.553742899999634 + }, + "_claim_shard_manifests": { + "calls": 1, + "seconds": 1.190663699999277 + }, + "_claim_shard_manifests_from_paths": { + "calls": 4, + "seconds": 3.5043245000051684 + }, + "_duplicate_event_ids": { + "calls": 0, + "seconds": 0.0 + }, + "_export_claim_index": { + "calls": 0, + "seconds": 0.0 + }, + "_logical_rows": { + "calls": 1, + "seconds": 7.100000220816582e-05 + }, + "_partition_manifests": { + "calls": 1, + "seconds": 1.4970807999998215 + }, + "_publish_or_validate_claim_index": { + "calls": 1, + "seconds": 1.4850256999998237 + }, + "_write_claim_index_manifest": { + "calls": 1, + "seconds": 0.6530425999990257 + }, + "load_normalized_snapshot_v3": { + "calls": 2, + "seconds": 28.654547599999205 + } + }, + "strict_reload_verified": true + } + ], + "runs": 3, + "schema_version": "1.0.0", + "summary": { + "maximum_peak_rss_gib": 3.135761260986328, + "median_events_per_second": 188411.34780898687, + "minimum_events_per_second": 182097.1387426198, + "retained_bytes": 3310487778 + }, + "thresholds": { + "maximum_peak_rss_gib": 16.0, + "minimum_events_per_second": 100000.0, + "storage_policy": { + "hot_quota_bytes": 161061273600, + "hot_retention_days": 30, + "minimum_free_bytes": 107374182400, + "minimum_free_fraction": 0.2 + } + } +} diff --git a/validation/m7-capture-remediation-v5/artifacts/dense-round-01-sha256-8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495.json b/validation/m7-capture-remediation-v5/artifacts/dense-round-01-sha256-8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495.json new file mode 100644 index 0000000..db9df55 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/dense-round-01-sha256-8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.882522102664738,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.882522102664738},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:43:55.305901Z","report_sha256":"41c8370aea8059701bd6b557d8970f3a40ff8283e1f9607a40de4370a141cdbf","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":25.756453499998315,"event_loop_delay_p95_milliseconds":23.58530000128667,"event_loop_delay_p99_milliseconds":37.72989999924903,"event_loop_delay_samples":1177,"last_epoch_submit_seconds":15.860130499997467,"normalization_group_window_seconds":9.896948599998723,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12411.957259566847,"throughput_websocket_messages_per_second":310.601768213179,"total_wall_seconds":25.82906709999952,"worker_teardown_seconds":0.07261360000120476,"workload_elapsed_seconds":25.756453499998315},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/dense-round-02-sha256-20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866.json b/validation/m7-capture-remediation-v5/artifacts/dense-round-02-sha256-20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866.json new file mode 100644 index 0000000..81fb9c6 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/dense-round-02-sha256-20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.739647491777234,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.7396474917772347},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:44:31.106228Z","report_sha256":"e4addbd5837e981f7eac7177c66f241e7012d383ebcb16be6ddbf634636e175a","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":26.740488300001743,"event_loop_delay_p95_milliseconds":23.05020000130753,"event_loop_delay_p99_milliseconds":36.538199998176424,"event_loop_delay_samples":1241,"last_epoch_submit_seconds":15.825802499999554,"normalization_group_window_seconds":10.90497879999748,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":11955.204273512805,"throughput_websocket_messages_per_second":299.17179934217876,"total_wall_seconds":26.81930800000191,"worker_teardown_seconds":0.07881970000016736,"workload_elapsed_seconds":26.740488300001743},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/dense-round-03-sha256-d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273.json b/validation/m7-capture-remediation-v5/artifacts/dense-round-03-sha256-d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273.json new file mode 100644 index 0000000..91919ab --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/dense-round-03-sha256-d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":32,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":319688,"messages_per_stream":1000,"normalized_accepted_rows":319688,"normalized_rows_per_websocket_message":39.961,"providers":["binance","okx"],"raw_frames_including_https_snapshots":8004,"raw_segments":32,"stream_results":[{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":1000},{"accepted_rows":40001,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":1000},{"accepted_rows":39921,"archived_segments":4,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":4,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":1000}],"streams":8,"websocket_messages":8000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":9590.64,"normalized_rows_safety_multiple":3.8748583647241226,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":3196.88,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":3.8748583647241226},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:45:08.093803Z","report_sha256":"9137f297571961036bbcf02373600093b896cc82529a1f23b584e011b85a7f88","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":25.807394899999053,"event_loop_delay_p95_milliseconds":23.888799998530885,"event_loop_delay_p99_milliseconds":36.968600001273444,"event_loop_delay_samples":1177,"last_epoch_submit_seconds":15.863740199998574,"normalization_group_window_seconds":9.928547499999695,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":12387.457209019254,"throughput_websocket_messages_per_second":309.9886691779298,"total_wall_seconds":25.87976350000099,"worker_teardown_seconds":0.07236860000193701,"workload_elapsed_seconds":25.807394899999053},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1000,"delta_levels_per_side":20,"description":"Every incremental frame updates 20 bids and 20 asks. Binance REST snapshots cover the configured limit=1000 depth per side; OKX books snapshots cover the channel's representative 400-level depth per side.","name":"dense-burst","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":400},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/full-coverage-sha256-00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3.json b/validation/m7-capture-remediation-v5/artifacts/full-coverage-sha256-00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3.json new file mode 100644 index 0000000..2c87d5d --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/full-coverage-sha256-00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.16.0", "timestamp": "2026-08-30T21:43:07.150116", "branch_coverage": true, "show_contexts": false}, "files": {"src\\quant_data_kit\\__init__.py": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 13, 14, 28, 35, 56, 65, 66, 73, 74, 91, 96, 104, 105, 117, 118, 124, 126], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\_version.py": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\__init__.py": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 10, 11, 12, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\base.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 41, 42, 43, 44, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 116, 117, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 142, 143, 144, 145, 146, 151, 153, 154, 156, 169, 170, 171, 172, 173, 177, 178, 179, 181, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 212, 216, 217, 218, 219], "summary": {"covered_lines": 124, "num_statements": 126, "percent_covered": 97.46835443037975, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 6, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98", "num_branches": 32, "num_partial_branches": 2, "covered_branches": 30, "missing_branches": 2, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [45, 193], "excluded_lines": [50, 51, 52, 53, 54, 55], "executed_branches": [[43, 44], [57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99], [133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[43, 45], [192, 193]], "functions": {"AdapterContext.instrument": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "AdapterContext.session_id": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter.transaction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51], "start_line": 51, "executed_branches": [], "missing_branches": []}, "ProviderAdapter.adapt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [53], "start_line": 53, "executed_branches": [], "missing_branches": []}, "utc_from_milliseconds": {"executed_lines": [57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "utc_from_text": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73]], "missing_branches": []}, "fixed": {"executed_lines": [77, 78, 79, 80, 81], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "event_identity": {"executed_lines": [95, 96, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84, "executed_branches": [[95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}, "BookSequenceNormalizer.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.transaction": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.snapshot": {"executed_lines": [132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[133, 134], [133, 135]], "missing_branches": []}, "BookSequenceNormalizer.heartbeat": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140, "executed_branches": [[142, 143], [142, 144], [145, -140], [145, 146]], "missing_branches": []}, "BookSequenceNormalizer.reset": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer.advance_without_levels": {"executed_lines": [169, 170, 171, 172, 173, 177, 178, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [[169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179]], "missing_branches": []}, "BookSequenceNormalizer.delta": {"executed_lines": [189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [193], "excluded_lines": [], "start_line": 181, "executed_branches": [[189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "adapt_fixture_messages": {"executed_lines": [216, 217, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 66, 76, 84, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AdapterInstrument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "AdapterContext": {"executed_lines": [34, 35, 36, 37, 42, 43, 44], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45], "excluded_lines": [], "start_line": 27, "executed_branches": [[43, 44]], "missing_branches": [[43, 45]]}, "ProviderAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51, 53], "start_line": 48, "executed_branches": [], "missing_branches": []}, "BookSequenceNormalizer": {"executed_lines": [116, 117, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 142, 143, 144, 145, 146, 153, 154, 169, 170, 171, 172, 173, 177, 178, 179, 189, 190, 191, 192, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [193], "excluded_lines": [], "start_line": 112, "executed_branches": [[133, 134], [133, 135], [142, 143], [142, 144], [145, -140], [145, 146], [169, 170], [169, 171], [172, 173], [172, 177], [177, 178], [177, 179], [189, 190], [189, 191], [192, 197], [197, 198], [197, 199], [199, 200], [199, 201], [203, 204], [203, 207]], "missing_branches": [[192, 193]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 33, 41, 48, 49, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 84, 95, 96, 97, 98, 99, 112, 115, 119, 120, 131, 140, 151, 156, 181, 212, 216, 217, 218, 219], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [50, 52, 54, 55], "start_line": 1, "executed_branches": [[57, 58], [57, 59], [71, 72], [71, 73], [95, 96], [95, 97], [97, 98], [97, 99]], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\binance.py": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 69, "num_statements": 70, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]], "functions": {"BinanceFixtureAdapter.__init__": {"executed_lines": [40, 41, 42, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, 41], [40, 42]], "missing_branches": []}, "BinanceFixtureAdapter._event_id": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.transaction": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "BinanceFixtureAdapter.adapt": {"executed_lines": [56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 55, "executed_branches": [[63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BinanceFixtureAdapter": {"executed_lines": [40, 41, 42, 43, 44, 47, 48, 52, 53, 56, 57, 58, 59, 60, 63, 64, 66, 67, 80, 81, 82, 96, 97, 98, 99, 100, 101, 125, 126, 127, 128, 129, 130, 131, 132, 135, 138, 139, 144, 145, 151, 152, 155, 156, 157, 174, 175, 176, 177, 190, 191, 192, 203, 204], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 97.40259740259741, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98", "num_branches": 22, "num_partial_branches": 1, "covered_branches": 21, "missing_branches": 1, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32, "executed_branches": [[40, 41], [40, 42], [63, 64], [63, 81], [64, 66], [81, 82], [81, 97], [97, 98], [97, 126], [126, 127], [126, 176], [131, 132], [131, 135], [138, 139], [138, 145], [152, 155], [152, 175], [176, 177], [176, 191], [191, 192], [191, 204]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 16, 17, 32, 33, 34, 39, 46, 50, 51, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\cn_neutral.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 109, 110, 111], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": [], "functions": {"CNNeutralFixtureAdapter.__init__": {"executed_lines": [32, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [[32, 33], [32, 34]], "missing_branches": []}, "CNNeutralFixtureAdapter.transaction": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CNNeutralFixtureAdapter.adapt": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [[43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "CNNeutralFixtureAdapter._level": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CNNeutralFixtureAdapter": {"executed_lines": [32, 33, 34, 35, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 70, 71, 72, 73, 74, 80, 81, 84, 85, 105, 106, 107, 111], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[32, 33], [32, 34], [43, 44], [43, 45], [52, 53], [52, 71], [71, 72], [71, 107], [81, 84], [81, 106]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 17, 18, 28, 29, 31, 37, 38, 42, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\adapters_v2\\okx.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 86, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 137, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 293, 294, 295, 296], "summary": {"covered_lines": 146, "num_statements": 152, "percent_covered": 95.09803921568627, "percent_covered_display": "95", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.05263157894737, "percent_statements_covered_display": "96", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]], "functions": {"OKXFixtureAdapter.__init__": {"executed_lines": [44, 45, 46, 47, 48, 49], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 45], [44, 46]], "missing_branches": []}, "OKXFixtureAdapter.transaction": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[62, 63], [62, 66]], "missing_branches": []}, "OKXFixtureAdapter._book_transaction": {"executed_lines": [70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [[76, 77], [76, 79], [80, 81], [80, 83]], "missing_branches": []}, "OKXFixtureAdapter._require_fresh_snapshot": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._signed_crc32": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "OKXFixtureAdapter._checksum": {"executed_lines": [98, 99, 100, 101, 102, 103, 104, 105, 106], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[101, 102], [101, 106], [102, 103], [104, 101], [104, 105]], "missing_branches": [[102, 104]]}, "OKXFixtureAdapter._apply_book_message": {"executed_lines": [116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [123, 127, 132, 133], "excluded_lines": [], "start_line": 109, "executed_branches": [[116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135]], "missing_branches": [[122, 123], [126, 127]]}, "OKXFixtureAdapter.adapt": {"executed_lines": [138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.34146341463415, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [229, 234], "excluded_lines": [], "start_line": 137, "executed_branches": [[145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[228, 229]]}, "OKXFixtureAdapter._book_level": {"executed_lines": [295, 296], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"OKXFixtureAdapter": {"executed_lines": [44, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 87, 88, 89, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 129, 130, 131, 134, 135, 138, 139, 140, 141, 142, 145, 146, 147, 148, 163, 164, 165, 179, 180, 181, 182, 183, 184, 185, 186, 202, 203, 204, 205, 206, 207, 208, 209, 213, 214, 215, 216, 217, 218, 221, 222, 223, 224, 225, 228, 235, 241, 242, 245, 246, 261, 262, 263, 264, 277, 278, 279, 290, 291, 295, 296], "summary": {"covered_lines": 118, "num_statements": 124, "percent_covered": 94.31818181818181, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.16129032258064, "percent_statements_covered_display": "95", "num_branches": 52, "num_partial_branches": 4, "covered_branches": 48, "missing_branches": 4, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [123, 127, 132, 133, 229, 234], "excluded_lines": [], "start_line": 35, "executed_branches": [[44, 45], [44, 46], [62, 63], [62, 66], [76, 77], [76, 79], [80, 81], [80, 83], [101, 102], [101, 106], [102, 103], [104, 101], [104, 105], [116, 117], [116, 119], [119, 120], [119, 130], [122, 124], [124, 119], [124, 125], [126, 129], [134, -108], [134, 135], [145, 146], [145, 164], [146, 147], [146, 148], [164, 165], [164, 180], [180, 181], [180, 204], [204, 205], [204, 263], [207, 208], [207, 213], [214, 215], [214, 216], [216, 217], [216, 224], [217, 218], [217, 221], [228, 235], [242, 245], [242, 262], [263, 264], [263, 278], [278, 279], [278, 291]], "missing_branches": [[102, 104], [122, 123], [126, 127], [228, 229]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 19, 20, 35, 36, 37, 43, 51, 52, 68, 69, 86, 91, 92, 96, 97, 108, 109, 137, 293, 294], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\calendar.py": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]], "functions": {"trading_days_between": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": [[14, 15], [14, 16]]}, "load_sse_trade_dates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [22, 24, 25, 26, 27], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": []}, "is_trading_day": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [31, 32, 33, 34], "excluded_lines": [], "start_line": 30, "executed_branches": [], "missing_branches": [[32, 33], [32, 34]]}, "": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 20, 30], "summary": {"covered_lines": 5, "num_statements": 20, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 22, 24, 25, 26, 27, 31, 32, 33, 34], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[14, 15], [14, 16], [32, 33], [32, 34]]}}}, "src\\quant_data_kit\\capture_v2\\__init__.py": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 8, 9, 36, 52, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]], "functions": {"_reject_credentials": {"executed_lines": [53, 54, 55, 56, 57, 60, 61, 62, 63], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63]], "missing_branches": []}, "load_capture_config": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [[71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89]], "missing_branches": []}, "_streams": {"executed_lines": [106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [[106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117]], "missing_branches": []}, "_parser": {"executed_lines": [128, 132, 133, 139, 145, 150], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "main_capture": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [169, 170], "excluded_lines": [], "start_line": 153, "executed_branches": [[158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 66, 105, 127, 153, 186], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [187], "excluded_lines": [], "start_line": 1, "executed_branches": [[186, -1]], "missing_branches": [[186, 187]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 23, 25, 36, 49, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 127, 128, 132, 133, 139, 145, 150, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 171, 172, 173, 174, 175, 186], "summary": {"covered_lines": 96, "num_statements": 99, "percent_covered": 97.08029197080292, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 1, "covered_branches": 37, "missing_branches": 1, "percent_branches_covered": 97.36842105263158, "percent_branches_covered_display": "97"}, "missing_lines": [169, 170, 187], "excluded_lines": [], "start_line": 1, "executed_branches": [[53, 54], [53, 61], [54, -52], [54, 55], [56, 57], [56, 60], [61, -52], [61, 62], [62, -52], [62, 63], [71, 72], [71, 73], [75, 76], [75, 77], [79, 80], [79, 81], [85, 88], [85, 89], [106, 107], [106, 108], [108, 109], [108, 110], [111, 112], [111, 124], [112, 113], [112, 114], [115, 116], [115, 117], [158, 159], [158, 160], [160, 161], [160, 165], [161, 162], [161, 163], [165, 166], [165, 167], [186, -1]], "missing_branches": [[186, 187]]}}}, "src\\quant_data_kit\\capture_v2\\collector.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 335, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 365, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 393, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 438, 445, 446, 447, 448, 449, 450, 451, 467, 468, 469, 470, 471, 472, 473, 474, 475, 481, 482, 483, 484, 485, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 557, 558, 559, 560, 563, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 615, 618, 634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 663, 664, 666, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 690, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832, 841, 842, 845, 858, 859, 862, 892, 902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 465, "num_statements": 485, "percent_covered": 94.99136442141624, "percent_covered_display": "95", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 95.87628865979381, "percent_statements_covered_display": "96", "num_branches": 94, "num_partial_branches": 9, "covered_branches": 85, "missing_branches": 9, "percent_branches_covered": 90.42553191489361, "percent_branches_covered_display": "90"}, "missing_lines": [146, 147, 231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555, 673, 756, 757, 768, 792, 831], "excluded_lines": [], "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144], [229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569], [734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555], [812, 811], [830, 831]], "functions": {"_json_object": {"executed_lines": [117, 118, 119, 120, 121, 122, 123, 124, 125], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125]], "missing_branches": []}, "_frame_metadata": {"executed_lines": [129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 128, "executed_branches": [[130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}, "CaptureStreamRunner.__init__": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner.run": {"executed_lines": [227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303], "summary": {"covered_lines": 61, "num_statements": 67, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 91.04477611940298, "percent_statements_covered_display": "91", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 11, "missing_branches": 3, "percent_branches_covered": 78.57142857142857, "percent_branches_covered_display": "79"}, "missing_lines": [231, 232, 238, 296, 297, 301], "excluded_lines": [], "start_line": 226, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292]], "missing_branches": [[230, 231], [234, 238], [291, 301]]}, "CaptureStreamRunner._handle_cancellation": {"executed_lines": [306, 307, 308, 309, 310, 311], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 305, "executed_branches": [[308, 309]], "missing_branches": [[308, 310]]}, "CaptureStreamRunner._run_connection": {"executed_lines": [314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313, "executed_branches": [[328, 329], [328, 331]], "missing_branches": []}, "CaptureStreamRunner._run_binance": {"executed_lines": [340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[354, 355], [354, 356], [358, -335], [358, 362]], "missing_branches": []}, "CaptureStreamRunner._run_okx": {"executed_lines": [370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [[381, 382], [381, 384], [386, -365], [386, 390]], "missing_branches": []}, "CaptureStreamRunner._receive_frame": {"executed_lines": [394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393, "executed_branches": [[394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436]], "missing_branches": []}, "CaptureStreamRunner._https_frame": {"executed_lines": [445, 446, 447, 448, 449, 450, 451], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner._apply_outcome": {"executed_lines": [468, 469, 470, 471, 472, 473, 474, 475], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475]], "missing_branches": []}, "CaptureStreamRunner._new_epoch": {"executed_lines": [482, 483, 484, 485], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481, "executed_branches": [[482, 483], [482, 484]], "missing_branches": []}, "CaptureStreamRunner._drain_segments": {"executed_lines": [501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 500, "executed_branches": [[501, -500], [501, 502], [503, 504], [503, 505], [505, 506]], "missing_branches": [[505, 507]]}, "CaptureStreamRunner._finalize_epoch": {"executed_lines": [511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 510, "executed_branches": [[511, 512], [511, 513], [514, 515], [514, 519]], "missing_branches": []}, "CaptureStreamRunner._terminal_cleanup": {"executed_lines": [524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 523, "executed_branches": [[536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523]], "missing_branches": [[547, 548], [554, 555]]}, "CaptureStreamRunner._pause": {"executed_lines": [558, 559, 560, 563, 564], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "CaptureStreamRunner._alert": {"executed_lines": [567, 568, 569], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[567, 568], [567, 569]], "missing_branches": []}, "CaptureStreamRunner._report": {"executed_lines": [572, 573, 574, 575, 576], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.__init__": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight": {"executed_lines": [664], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.preflight_only": {"executed_lines": [667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [673], "excluded_lines": [], "start_line": 666, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator.run": {"executed_lines": [691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832], "summary": {"covered_lines": 58, "num_statements": 63, "percent_covered": 91.56626506024097, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.06349206349206, "percent_statements_covered_display": "92", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [756, 757, 768, 792, 831], "excluded_lines": [], "start_line": 690, "executed_branches": [[734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[812, 811], [830, 831]]}, "CryptoL2CaptureCoordinator._stream_succeeded": {"executed_lines": [845], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 842, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._empty_stream_report": {"executed_lines": [862], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 859, "executed_branches": [], "missing_branches": []}, "CryptoL2CaptureCoordinator._write_report": {"executed_lines": [902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 892, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 128, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 841, 842, 858, 859, 892], "summary": {"covered_lines": 97, "num_statements": 97, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CaptureStreamReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66, "executed_branches": [], "missing_branches": []}, "CaptureRunReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [], "missing_branches": []}, "CaptureStreamRunner": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 195, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 244, 245, 246, 247, 252, 253, 254, 255, 256, 257, 258, 259, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 311, 314, 315, 320, 324, 325, 326, 327, 328, 329, 331, 333, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 356, 357, 358, 362, 363, 370, 371, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 394, 398, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 430, 431, 432, 433, 434, 435, 436, 445, 446, 447, 448, 449, 450, 451, 468, 469, 470, 471, 472, 473, 474, 475, 482, 483, 484, 485, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 541, 542, 545, 546, 547, 549, 552, 553, 554, 558, 559, 560, 563, 564, 567, 568, 569, 572, 573, 574, 575, 576], "summary": {"covered_lines": 243, "num_statements": 255, "percent_covered": 94.0809968847352, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 95.29411764705883, "percent_statements_covered_display": "95", "num_branches": 66, "num_partial_branches": 7, "covered_branches": 59, "missing_branches": 7, "percent_branches_covered": 89.39393939393939, "percent_branches_covered_display": "89"}, "missing_lines": [231, 232, 238, 296, 297, 301, 539, 540, 543, 544, 548, 555], "excluded_lines": [], "start_line": 151, "executed_branches": [[229, 230], [229, 302], [230, 233], [234, 235], [258, 259], [258, 265], [273, 274], [273, 277], [287, 288], [287, 290], [291, 292], [308, 309], [328, 329], [328, 331], [354, 355], [354, 356], [358, -335], [358, 362], [381, 382], [381, 384], [386, -365], [386, 390], [394, 398], [394, 401], [402, 403], [402, 407], [404, 405], [404, 406], [434, 435], [434, 436], [468, 469], [468, 470], [471, -467], [471, 472], [474, 471], [474, 475], [482, 483], [482, 484], [501, -500], [501, 502], [503, 504], [503, 505], [505, 506], [511, 512], [511, 513], [514, 515], [514, 519], [536, 537], [536, 541], [545, 546], [545, 552], [547, 549], [552, 553], [552, 554], [554, -523], [558, 559], [558, 560], [567, 568], [567, 569]], "missing_branches": [[230, 231], [234, 238], [291, 301], [308, 310], [505, 507], [547, 548], [554, 555]]}, "CryptoL2CaptureCoordinator": {"executed_lines": [634, 635, 636, 637, 638, 639, 649, 656, 657, 658, 659, 660, 661, 664, 667, 668, 669, 670, 671, 672, 674, 675, 676, 677, 678, 681, 691, 692, 693, 694, 695, 696, 697, 701, 709, 710, 720, 721, 722, 723, 726, 734, 735, 736, 737, 738, 739, 776, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 793, 794, 795, 796, 797, 800, 801, 802, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 824, 825, 826, 829, 830, 832, 845, 862, 902, 903, 911, 912, 928, 929, 930, 931, 932, 933, 936, 937, 938, 939, 940, 941, 942], "summary": {"covered_lines": 103, "num_statements": 109, "percent_covered": 93.7984496124031, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.4954128440367, "percent_statements_covered_display": "94", "num_branches": 20, "num_partial_branches": 2, "covered_branches": 18, "missing_branches": 2, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [673, 756, 757, 768, 792, 831], "excluded_lines": [], "start_line": 615, "executed_branches": [[734, 735], [734, 736], [738, 739], [738, 776], [785, 786], [785, 825], [787, 788], [787, 805], [801, 787], [801, 802], [805, 785], [805, 806], [806, 807], [806, 808], [811, 812], [811, 814], [812, 813], [830, 832]], "missing_branches": [[812, 811], [830, 831]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 35, 45, 51, 58, 59, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 128, 129, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 145, 148, 151, 152, 226, 305, 313, 335, 365, 393, 438, 467, 481, 500, 510, 523, 557, 566, 571, 615, 618, 663, 666, 690, 841, 842, 858, 859, 892], "summary": {"covered_lines": 119, "num_statements": 121, "percent_covered": 98.44961240310077, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.34710743801652, "percent_statements_covered_display": "98", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [146, 147], "excluded_lines": [], "start_line": 1, "executed_branches": [[121, 122], [121, 123], [123, 124], [123, 125], [130, 131], [130, 136], [142, 143], [142, 144]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\epoch.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 30, 36, 37, 43, 44, 45, 46, 50, 51, 68, 89, 108, 133, 138, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 197, 198, 199, 200, 203, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 229, 230, 235, 236, 237, 238, 241, 242, 245, 246, 249, 250, 257, 258, 261, 264, 265, 266, 267, 268, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 300, 301, 302, 303, 304, 305, 306, 321, 322, 323, 324, 325, 326, 329, 340, 345, 346, 347, 358, 359, 360, 362, 363, 364, 365, 366, 371, 372, 373, 376, 390, 391, 392, 393, 394, 401, 402, 403, 406, 407, 408, 409, 410, 411, 416, 417, 418, 425, 427, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 461, 462, 463, 466, 467, 468, 469, 471, 472, 473, 474, 475, 477, 478, 479, 480, 482, 483, 484, 485, 488, 489, 490, 491, 494, 505, 506, 507, 508, 509, 510, 511, 516, 517, 526, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 544, 555, 558, 561, 566, 567, 568, 569, 574, 575, 576, 577, 578, 579, 580, 582, 583, 589, 591, 592, 595, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 624, 625, 626, 627, 633, 634, 644, 649, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 665, 668, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 721, 722, 723, 724, 725, 726, 729, 730, 731, 732, 733, 734, 736, 737, 738, 739, 740, 741, 746, 747, 748, 749, 750, 751, 752, 753, 754, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 775, 776, 777, 778, 779, 781, 782, 783, 785, 786, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 827, 828, 838, 839, 841, 851, 852, 853, 854, 860, 861, 874, 875, 880, 881, 889, 890, 900, 901, 902, 905, 912, 913, 929, 935, 946, 947, 948, 951, 952, 953, 962, 963, 976, 977, 988, 990, 993, 995, 996, 997, 1000, 1005, 1006, 1007, 1008, 1010, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1039, 1040, 1042, 1043, 1045, 1046, 1047, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1062, 1063, 1065, 1066, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1104, 1105, 1108, 1119, 1120, 1130, 1133, 1137, 1138, 1139, 1140, 1141, 1148, 1149, 1155, 1156, 1169, 1170, 1175, 1178, 1186, 1187, 1188, 1189, 1190, 1191, 1198, 1199, 1204, 1211, 1212, 1231, 1232, 1233, 1234, 1242, 1243, 1248, 1252, 1261, 1262, 1275, 1276, 1287, 1292, 1293, 1298, 1306, 1307, 1310, 1315, 1320, 1322, 1323, 1327, 1328, 1329, 1332, 1333, 1336, 1337, 1338, 1343, 1353, 1358, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1373, 1374, 1375, 1376, 1382, 1383, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1396, 1397, 1398, 1408, 1409, 1410, 1411, 1412, 1413, 1427, 1428, 1429, 1430, 1431, 1439, 1441, 1442, 1443, 1444, 1446, 1451, 1469, 1470, 1471, 1472, 1473, 1480, 1482, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1532, 1533, 1534, 1535, 1536, 1537, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1557, 1558, 1560, 1561, 1562, 1570, 1571, 1572, 1573, 1574, 1576, 1584, 1585, 1607, 1608, 1609, 1614, 1616, 1617, 1626, 1627, 1628, 1630, 1633, 1634, 1638, 1639, 1640, 1641, 1642, 1644, 1645, 1647, 1648, 1649, 1651, 1652, 1653, 1654, 1655, 1656, 1659, 1662, 1668, 1669, 1670, 1671, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1684, 1685, 1686, 1689, 1695, 1696, 1697, 1698, 1699, 1700, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1718, 1727, 1735, 1742, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1766, 1767, 1769, 1770, 1771, 1773, 1774, 1782, 1783, 1784, 1785], "summary": {"covered_lines": 752, "num_statements": 784, "percent_covered": 94.62264150943396, "percent_covered_display": "95", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 95.91836734693878, "percent_statements_covered_display": "96", "num_branches": 276, "num_partial_branches": 25, "covered_branches": 251, "missing_branches": 25, "percent_branches_covered": 90.94202898550725, "percent_branches_covered_display": "91"}, "missing_lines": [320, 361, 476, 590, 840, 926, 934, 989, 994, 1009, 1041, 1044, 1134, 1225, 1226, 1249, 1291, 1303, 1321, 1324, 1354, 1355, 1440, 1481, 1553, 1554, 1559, 1631, 1657, 1658, 1705, 1706], "excluded_lines": [], "executed_branches": [[178, 179], [178, 180], [182, 183], [182, 184], [217, 218], [217, 219], [220, 221], [220, 222], [222, 223], [222, 224], [224, 225], [224, 226], [226, 227], [226, 229], [235, 236], [235, 237], [265, -261], [265, 266], [273, 274], [273, 280], [275, 276], [275, 277], [289, 290], [289, 291], [300, 301], [300, 302], [306, 321], [322, 323], [322, 324], [324, 325], [324, 326], [347, 358], [347, 359], [360, 362], [364, 365], [364, 366], [371, 372], [371, 373], [391, 392], [391, 393], [401, 402], [401, 403], [403, 406], [403, 407], [408, 409], [408, 410], [410, 411], [410, 417], [411, 416], [411, 447], [417, 418], [417, 427], [418, 425], [418, 447], [427, 437], [427, 438], [439, 440], [439, 441], [442, 443], [442, 445], [443, 444], [443, 447], [445, 446], [445, 447], [450, 451], [450, 452], [452, 453], [452, 454], [454, 455], [454, 456], [461, 462], [461, 463], [472, 473], [472, 474], [475, 477], [477, 478], [477, 479], [516, 517], [516, 541], [533, 534], [539, 540], [568, 569], [568, 592], [578, 579], [578, 582], [589, 591], [605, 606], [605, 607], [608, 609], [608, 610], [611, 612], [611, 615], [612, 613], [612, 614], [615, 616], [615, 617], [618, 624], [618, 625], [625, 626], [625, 627], [644, -595], [644, 649], [685, 686], [685, 687], [687, 688], [687, 689], [723, 724], [723, 733], [726, 729], [726, 731], [733, -719], [733, 734], [738, -736], [738, 739], [754, 759], [754, 760], [760, 738], [760, 761], [765, 766], [765, 767], [776, 777], [776, 778], [808, 809], [808, 810], [827, 828], [827, 838], [839, 841], [852, 853], [852, 890], [854, 860], [854, 861], [875, 880], [875, 881], [900, 901], [900, 929], [905, 912], [905, 913], [929, 935], [946, 947], [946, 993], [951, 952], [951, 953], [953, 962], [953, 963], [976, 977], [976, 988], [988, 990], [993, 995], [995, 996], [995, 997], [1005, 1006], [1005, 1007], [1008, 1010], [1013, 1014], [1013, 1015], [1040, 1042], [1043, 1045], [1047, 1050], [1047, 1051], [1080, 1081], [1080, 1082], [1083, 1084], [1083, 1358], [1084, 1085], [1084, 1086], [1088, 1089], [1088, 1092], [1093, 1083], [1093, 1094], [1094, 1095], [1094, 1096], [1100, 1104], [1100, 1105], [1119, 1120], [1119, 1130], [1133, 1137], [1140, 1141], [1140, 1188], [1149, 1155], [1149, 1156], [1170, 1175], [1170, 1178], [1190, 1191], [1190, 1231], [1204, 1211], [1204, 1212], [1233, 1234], [1233, 1298], [1248, 1252], [1252, 1261], [1252, 1262], [1275, 1276], [1275, 1287], [1287, 1292], [1298, 1306], [1306, 1307], [1306, 1310], [1320, 1322], [1322, 1323], [1322, 1328], [1323, 1327], [1328, 1329], [1328, 1332], [1332, 1333], [1332, 1336], [1367, 1368], [1367, 1369], [1397, 1398], [1397, 1412], [1408, 1409], [1408, 1410], [1439, 1441], [1480, 1482], [1503, 1504], [1503, 1505], [1505, 1506], [1505, 1507], [1507, 1508], [1508, 1509], [1540, 1541], [1540, 1542], [1558, 1560], [1626, 1627], [1626, 1628], [1638, 1639], [1638, 1640], [1648, -1647], [1648, 1649], [1653, -1651], [1653, 1654], [1669, -1662], [1669, 1670], [1671, 1675], [1671, 1676], [1677, 1669], [1677, 1678], [1684, 1685], [1684, 1686], [1697, 1698], [1697, 1714], [1709, 1710], [1709, 1712], [1714, 1715], [1756, 1757], [1756, 1758], [1762, 1766], [1762, 1767], [1770, -1769], [1770, 1771], [1782, 1783], [1782, 1784]], "missing_branches": [[306, 320], [360, 361], [475, 476], [533, 536], [539, 516], [589, 590], [839, 840], [929, 934], [988, 989], [993, 994], [1008, 1009], [1040, 1041], [1043, 1044], [1133, 1134], [1248, 1249], [1287, 1291], [1298, 1303], [1320, 1321], [1323, 1324], [1439, 1440], [1480, 1481], [1507, 1511], [1508, 1510], [1558, 1559], [1714, -1689]], "functions": {"_sha256_file": {"executed_lines": [178, 179, 180, 181, 182, 183, 184], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [[178, 179], [178, 180], [182, 183], [182, 184]], "missing_branches": []}, "_journal_root": {"executed_lines": [188], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [], "missing_branches": []}, "_validated_glob": {"executed_lines": [198, 199, 200], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "_load_hashed_json": {"executed_lines": [212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 229, 230, 235, 236, 237, 238], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203, "executed_branches": [[217, 218], [217, 219], [220, 221], [220, 222], [222, 223], [222, 224], [224, 225], [224, 226], [226, 227], [226, 229], [235, 236], [235, 237]], "missing_branches": []}, "_is_positive_int": {"executed_lines": [242], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "_is_nonnegative_int": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [], "missing_branches": []}, "_is_sha256_hex": {"executed_lines": [250], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249, "executed_branches": [], "missing_branches": []}, "_is_snapshot_id": {"executed_lines": [258], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [], "missing_branches": []}, "_require_closed_fields": {"executed_lines": [264, 265, 266, 267, 268], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[265, -261], [265, 266]], "missing_branches": []}, "_load_epoch_parts": {"executed_lines": [272, 273, 274, 275, 276, 277, 278, 279, 280], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[273, 274], [273, 280], [275, 276], [275, 277]], "missing_branches": []}, "_parse_created_at": {"executed_lines": [284, 285, 286, 287, 288, 289, 290, 291], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [[289, 290], [289, 291]], "missing_branches": []}, "_validate_raw_references": {"executed_lines": [300, 301, 302, 303, 304, 305, 306, 321, 322, 323, 324, 325, 326], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [320], "excluded_lines": [], "start_line": 294, "executed_branches": [[300, 301], [300, 302], [306, 321], [322, 323], [322, 324], [324, 325], [324, 326]], "missing_branches": [[306, 320]]}, "_validate_prepared_binding": {"executed_lines": [340, 345, 346, 347, 358, 359, 360, 362, 363, 364, 365, 366, 371, 372, 373], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [361], "excluded_lines": [], "start_line": 329, "executed_branches": [[347, 358], [347, 359], [360, 362], [364, 365], [364, 366], [371, 372], [371, 373]], "missing_branches": [[360, 361]]}, "_validate_terminal_binding": {"executed_lines": [390, 391, 392, 393, 394, 401, 402, 403, 406, 407, 408, 409, 410, 411, 416, 417, 418, 425, 427, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 461, 462, 463], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 34, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[391, 392], [391, 393], [401, 402], [401, 403], [403, 406], [403, 407], [408, 409], [408, 410], [410, 411], [410, 417], [411, 416], [411, 447], [417, 418], [417, 427], [418, 425], [418, 447], [427, 437], [427, 438], [439, 440], [439, 441], [442, 443], [442, 445], [443, 444], [443, 447], [445, 446], [445, 447], [450, 451], [450, 452], [452, 453], [452, 454], [454, 455], [454, 456], [461, 462], [461, 463]], "missing_branches": []}, "_CanonicalRowsDigest.__init__": {"executed_lines": [468, 469], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [], "missing_branches": []}, "_CanonicalRowsDigest.update": {"executed_lines": [472, 473, 474, 475, 477, 478, 479, 480], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [476], "excluded_lines": [], "start_line": 471, "executed_branches": [[472, 473], [472, 474], [475, 477], [477, 478], [477, 479]], "missing_branches": [[475, 476]]}, "_CanonicalRowsDigest.hexdigest": {"executed_lines": [483, 484, 485], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "_expected_snapshot_binding": {"executed_lines": [505, 506, 507, 508, 509, 510, 511, 516, 517, 526, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 544, 555, 558], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [[516, 517], [516, 541], [533, 534], [539, 540]], "missing_branches": [[533, 536], [539, 516]]}, "_actual_snapshot_partitions": {"executed_lines": [566, 567, 568, 569, 574, 575, 576, 577, 578, 579, 580, 582, 583, 589, 591, 592], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [590], "excluded_lines": [], "start_line": 561, "executed_branches": [[568, 569], [568, 592], [578, 579], [578, 582], [589, 591]], "missing_branches": [[589, 590]]}, "_validate_snapshot_binding": {"executed_lines": [604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 624, 625, 626, 627, 633, 634, 644, 649], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 595, "executed_branches": [[605, 606], [605, 607], [608, 609], [608, 610], [611, 612], [611, 615], [612, 613], [612, 614], [615, 616], [615, 617], [618, 624], [618, 625], [625, 626], [625, 627], [644, -595], [644, 649]], "missing_branches": []}, "_open_journal_file": {"executed_lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.__init__": {"executed_lines": [685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668, "executed_branches": [[685, 686], [685, 687], [687, 688], [687, 689]], "missing_branches": []}, "NormalizedEpochJournal.append": {"executed_lines": [720, 721, 722, 723, 724, 725, 726, 729, 730, 731, 732, 733, 734], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 719, "executed_branches": [[723, 724], [723, 733], [726, 729], [726, 731], [733, -719], [733, 734]], "missing_branches": []}, "NormalizedEpochJournal._append_bodies": {"executed_lines": [737, 738, 739, 740, 741, 746, 747, 748, 749, 750, 751, 752, 753, 754, 759, 760, 761], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 736, "executed_branches": [[738, -736], [738, 739], [754, 759], [754, 760], [760, 738], [760, 761]], "missing_branches": []}, "NormalizedEpochJournal.flush": {"executed_lines": [764, 765, 766, 767, 768, 769, 770, 771], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[765, 766], [765, 767]], "missing_branches": []}, "NormalizedEpochJournal.record_segment": {"executed_lines": [774, 775, 776, 777, 778, 779], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 773, "executed_branches": [[776, 777], [776, 778]], "missing_branches": []}, "NormalizedEpochJournal.records": {"executed_lines": [783], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 782, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal.recover": {"executed_lines": [805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 827, 828, 838, 839, 841, 851, 852, 853, 854, 860, 861, 874, 875, 880, 881, 889, 890, 900, 901, 902, 905, 912, 913, 929, 935, 946, 947, 948, 951, 952, 953, 962, 963, 976, 977, 988, 990, 993, 995, 996, 997, 1000, 1005, 1006, 1007, 1008, 1010, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1039, 1040, 1042, 1043, 1045, 1046, 1047, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1062, 1063], "summary": {"covered_lines": 98, "num_statements": 106, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 92.45283018867924, "percent_statements_covered_display": "92", "num_branches": 44, "num_partial_branches": 7, "covered_branches": 37, "missing_branches": 7, "percent_branches_covered": 84.0909090909091, "percent_branches_covered_display": "84"}, "missing_lines": [840, 926, 934, 989, 994, 1009, 1041, 1044], "excluded_lines": [], "start_line": 786, "executed_branches": [[808, 809], [808, 810], [827, 828], [827, 838], [839, 841], [852, 853], [852, 890], [854, 860], [854, 861], [875, 880], [875, 881], [900, 901], [900, 929], [905, 912], [905, 913], [929, 935], [946, 947], [946, 993], [951, 952], [951, 953], [953, 962], [953, 963], [976, 977], [976, 988], [988, 990], [993, 995], [995, 996], [995, 997], [1005, 1006], [1005, 1007], [1008, 1010], [1013, 1014], [1013, 1015], [1040, 1042], [1043, 1045], [1047, 1050], [1047, 1051]], "missing_branches": [[839, 840], [929, 934], [988, 989], [993, 994], [1008, 1009], [1040, 1041], [1043, 1044]]}, "NormalizedEpochJournal.reconcile_pending": {"executed_lines": [1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1104, 1105, 1108, 1119, 1120, 1130, 1133, 1137, 1138, 1139, 1140, 1141, 1148, 1149, 1155, 1156, 1169, 1170, 1175, 1178, 1186, 1187, 1188, 1189, 1190, 1191, 1198, 1199, 1204, 1211, 1212, 1231, 1232, 1233, 1234, 1242, 1243, 1248, 1252, 1261, 1262, 1275, 1276, 1287, 1292, 1293, 1298, 1306, 1307, 1310, 1315, 1320, 1322, 1323, 1327, 1328, 1329, 1332, 1333, 1336, 1337, 1338, 1343, 1353, 1358], "summary": {"covered_lines": 87, "num_statements": 97, "percent_covered": 89.26174496644295, "percent_covered_display": "89", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 89.69072164948453, "percent_statements_covered_display": "90", "num_branches": 52, "num_partial_branches": 6, "covered_branches": 46, "missing_branches": 6, "percent_branches_covered": 88.46153846153847, "percent_branches_covered_display": "88"}, "missing_lines": [1134, 1225, 1226, 1249, 1291, 1303, 1321, 1324, 1354, 1355], "excluded_lines": [], "start_line": 1066, "executed_branches": [[1080, 1081], [1080, 1082], [1083, 1084], [1083, 1358], [1084, 1085], [1084, 1086], [1088, 1089], [1088, 1092], [1093, 1083], [1093, 1094], [1094, 1095], [1094, 1096], [1100, 1104], [1100, 1105], [1119, 1120], [1119, 1130], [1133, 1137], [1140, 1141], [1140, 1188], [1149, 1155], [1149, 1156], [1170, 1175], [1170, 1178], [1190, 1191], [1190, 1231], [1204, 1211], [1204, 1212], [1233, 1234], [1233, 1298], [1248, 1252], [1252, 1261], [1252, 1262], [1275, 1276], [1275, 1287], [1287, 1292], [1298, 1306], [1306, 1307], [1306, 1310], [1320, 1322], [1322, 1323], [1322, 1328], [1323, 1327], [1328, 1329], [1328, 1332], [1332, 1333], [1332, 1336]], "missing_branches": [[1133, 1134], [1248, 1249], [1287, 1291], [1298, 1303], [1320, 1321], [1323, 1324]]}, "NormalizedEpochJournal.finalize": {"executed_lines": [1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1373, 1374, 1375, 1376, 1382, 1383, 1388, 1389, 1390, 1391, 1392, 1393, 1394], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1360, "executed_branches": [[1367, 1368], [1367, 1369]], "missing_branches": []}, "NormalizedEpochJournal._prepare_transaction": {"executed_lines": [1397, 1398, 1408, 1409, 1410, 1411, 1412, 1413, 1427, 1428, 1429, 1430, 1431, 1439, 1441, 1442, 1443, 1444], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1440], "excluded_lines": [], "start_line": 1396, "executed_branches": [[1397, 1398], [1397, 1412], [1408, 1409], [1408, 1410], [1439, 1441]], "missing_branches": [[1439, 1440]]}, "NormalizedEpochJournal._write_committed_receipt": {"executed_lines": [1451, 1469, 1470, 1471, 1472, 1473, 1480, 1482], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1481], "excluded_lines": [], "start_line": 1446, "executed_branches": [[1480, 1482]], "missing_branches": [[1480, 1481]]}, "NormalizedEpochJournal.abort_visible": {"executed_lines": [1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1532, 1533, 1534, 1535, 1536, 1537], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [], "excluded_lines": [], "start_line": 1502, "executed_branches": [[1503, 1504], [1503, 1505], [1505, 1506], [1505, 1507], [1507, 1508], [1508, 1509]], "missing_branches": [[1507, 1511], [1508, 1510]]}, "NormalizedEpochJournal._seal_part": {"executed_lines": [1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1557, 1558, 1560, 1561, 1562, 1570, 1571, 1572, 1573, 1574], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1553, 1554, 1559], "excluded_lines": [], "start_line": 1539, "executed_branches": [[1540, 1541], [1540, 1542], [1558, 1560]], "missing_branches": [[1558, 1559]]}, "NormalizedEpochJournal._record_finalize_failure": {"executed_lines": [1584, 1585, 1607, 1608, 1609, 1614], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1576, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._publish_normalized": {"executed_lines": [1617, 1626, 1627, 1628], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1616, "executed_branches": [[1626, 1627], [1626, 1628]], "missing_branches": []}, "NormalizedEpochJournal._iter_record_batches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1631], "excluded_lines": [], "start_line": 1630, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._record_batch": {"executed_lines": [1638, 1639, 1640, 1641, 1642], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1634, "executed_branches": [[1638, 1639], [1638, 1640]], "missing_branches": []}, "NormalizedEpochJournal._iter_records": {"executed_lines": [1645], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1644, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal._require_open": {"executed_lines": [1648, 1649], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1647, "executed_branches": [[1648, -1647], [1648, 1649]], "missing_branches": []}, "NormalizedEpochJournal.__del__": {"executed_lines": [1652, 1653, 1654, 1655, 1656, 1659], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1657, 1658], "excluded_lines": [], "start_line": 1651, "executed_branches": [[1653, -1651], [1653, 1654]], "missing_branches": []}, "_iter_epoch_records": {"executed_lines": [1668, 1669, 1670, 1671, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1684, 1685, 1686], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1662, "executed_branches": [[1669, -1662], [1669, 1670], [1671, 1675], [1671, 1676], [1677, 1669], [1677, 1678], [1684, 1685], [1684, 1686]], "missing_branches": []}, "_iter_epoch_record_batches": {"executed_lines": [1695, 1696, 1697, 1698, 1699, 1700, 1709, 1710, 1711, 1712, 1713, 1714, 1715], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1705, 1706], "excluded_lines": [], "start_line": 1689, "executed_branches": [[1697, 1698], [1697, 1714], [1709, 1710], [1709, 1712], [1714, 1715]], "missing_branches": [[1714, -1689]]}, "_publish_epoch_parts": {"executed_lines": [1727, 1735], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1718, "executed_branches": [], "missing_branches": []}, "_publish_epoch_group": {"executed_lines": [1756, 1757, 1758, 1759, 1760, 1761, 1762, 1766, 1767, 1769, 1773, 1774, 1782, 1783, 1784, 1785], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1742, "executed_branches": [[1756, 1757], [1756, 1758], [1762, 1766], [1762, 1767], [1782, 1783], [1782, 1784]], "missing_branches": []}, "_publish_epoch_group.batches": {"executed_lines": [1770, 1771], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [[1770, -1769], [1770, 1771]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 30, 36, 37, 43, 44, 45, 46, 50, 51, 68, 89, 108, 133, 138, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 170, 171, 172, 173, 174, 177, 187, 197, 203, 241, 245, 249, 257, 261, 271, 283, 294, 329, 376, 466, 467, 471, 482, 488, 489, 490, 491, 494, 561, 595, 652, 665, 668, 719, 736, 763, 773, 781, 782, 785, 786, 1065, 1066, 1360, 1396, 1446, 1502, 1539, 1576, 1616, 1630, 1633, 1634, 1644, 1647, 1651, 1662, 1689, 1718, 1742], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"EpochPart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [], "missing_branches": []}, "NormalizedEpochReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150, "executed_branches": [], "missing_branches": []}, "_NormalizationSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171, "executed_branches": [], "missing_branches": []}, "_CanonicalRowsDigest": {"executed_lines": [468, 469, 472, 473, 474, 475, 477, 478, 479, 480, 483, 484, 485], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [476], "excluded_lines": [], "start_line": 466, "executed_branches": [[472, 473], [472, 474], [475, 477], [477, 478], [477, 479]], "missing_branches": [[475, 476]]}, "_ExpectedPartitionBinding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 489, "executed_branches": [], "missing_branches": []}, "NormalizedEpochJournal": {"executed_lines": [685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 720, 721, 722, 723, 724, 725, 726, 729, 730, 731, 732, 733, 734, 737, 738, 739, 740, 741, 746, 747, 748, 749, 750, 751, 752, 753, 754, 759, 760, 761, 764, 765, 766, 767, 768, 769, 770, 771, 774, 775, 776, 777, 778, 779, 783, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 827, 828, 838, 839, 841, 851, 852, 853, 854, 860, 861, 874, 875, 880, 881, 889, 890, 900, 901, 902, 905, 912, 913, 929, 935, 946, 947, 948, 951, 952, 953, 962, 963, 976, 977, 988, 990, 993, 995, 996, 997, 1000, 1005, 1006, 1007, 1008, 1010, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1039, 1040, 1042, 1043, 1045, 1046, 1047, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1062, 1063, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1104, 1105, 1108, 1119, 1120, 1130, 1133, 1137, 1138, 1139, 1140, 1141, 1148, 1149, 1155, 1156, 1169, 1170, 1175, 1178, 1186, 1187, 1188, 1189, 1190, 1191, 1198, 1199, 1204, 1211, 1212, 1231, 1232, 1233, 1234, 1242, 1243, 1248, 1252, 1261, 1262, 1275, 1276, 1287, 1292, 1293, 1298, 1306, 1307, 1310, 1315, 1320, 1322, 1323, 1327, 1328, 1329, 1332, 1333, 1336, 1337, 1338, 1343, 1353, 1358, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1373, 1374, 1375, 1376, 1382, 1383, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1397, 1398, 1408, 1409, 1410, 1411, 1412, 1413, 1427, 1428, 1429, 1430, 1431, 1439, 1441, 1442, 1443, 1444, 1451, 1469, 1470, 1471, 1472, 1473, 1480, 1482, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1532, 1533, 1534, 1535, 1536, 1537, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1557, 1558, 1560, 1561, 1562, 1570, 1571, 1572, 1573, 1574, 1584, 1585, 1607, 1608, 1609, 1614, 1617, 1626, 1627, 1628, 1638, 1639, 1640, 1641, 1642, 1645, 1648, 1649, 1652, 1653, 1654, 1655, 1656, 1659], "summary": {"covered_lines": 375, "num_statements": 401, "percent_covered": 91.95612431444242, "percent_covered_display": "92", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 93.51620947630923, "percent_statements_covered_display": "94", "num_branches": 146, "num_partial_branches": 18, "covered_branches": 128, "missing_branches": 18, "percent_branches_covered": 87.67123287671232, "percent_branches_covered_display": "88"}, "missing_lines": [840, 926, 934, 989, 994, 1009, 1041, 1044, 1134, 1225, 1226, 1249, 1291, 1303, 1321, 1324, 1354, 1355, 1440, 1481, 1553, 1554, 1559, 1631, 1657, 1658], "excluded_lines": [], "start_line": 665, "executed_branches": [[685, 686], [685, 687], [687, 688], [687, 689], [723, 724], [723, 733], [726, 729], [726, 731], [733, -719], [733, 734], [738, -736], [738, 739], [754, 759], [754, 760], [760, 738], [760, 761], [765, 766], [765, 767], [776, 777], [776, 778], [808, 809], [808, 810], [827, 828], [827, 838], [839, 841], [852, 853], [852, 890], [854, 860], [854, 861], [875, 880], [875, 881], [900, 901], [900, 929], [905, 912], [905, 913], [929, 935], [946, 947], [946, 993], [951, 952], [951, 953], [953, 962], [953, 963], [976, 977], [976, 988], [988, 990], [993, 995], [995, 996], [995, 997], [1005, 1006], [1005, 1007], [1008, 1010], [1013, 1014], [1013, 1015], [1040, 1042], [1043, 1045], [1047, 1050], [1047, 1051], [1080, 1081], [1080, 1082], [1083, 1084], [1083, 1358], [1084, 1085], [1084, 1086], [1088, 1089], [1088, 1092], [1093, 1083], [1093, 1094], [1094, 1095], [1094, 1096], [1100, 1104], [1100, 1105], [1119, 1120], [1119, 1130], [1133, 1137], [1140, 1141], [1140, 1188], [1149, 1155], [1149, 1156], [1170, 1175], [1170, 1178], [1190, 1191], [1190, 1231], [1204, 1211], [1204, 1212], [1233, 1234], [1233, 1298], [1248, 1252], [1252, 1261], [1252, 1262], [1275, 1276], [1275, 1287], [1287, 1292], [1298, 1306], [1306, 1307], [1306, 1310], [1320, 1322], [1322, 1323], [1322, 1328], [1323, 1327], [1328, 1329], [1328, 1332], [1332, 1333], [1332, 1336], [1367, 1368], [1367, 1369], [1397, 1398], [1397, 1412], [1408, 1409], [1408, 1410], [1439, 1441], [1480, 1482], [1503, 1504], [1503, 1505], [1505, 1506], [1505, 1507], [1507, 1508], [1508, 1509], [1540, 1541], [1540, 1542], [1558, 1560], [1626, 1627], [1626, 1628], [1638, 1639], [1638, 1640], [1648, -1647], [1648, 1649], [1653, -1651], [1653, 1654]], "missing_branches": [[839, 840], [929, 934], [988, 989], [993, 994], [1008, 1009], [1040, 1041], [1043, 1044], [1133, 1134], [1248, 1249], [1287, 1291], [1298, 1303], [1320, 1321], [1323, 1324], [1439, 1440], [1480, 1481], [1507, 1511], [1508, 1510], [1558, 1559]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 30, 36, 37, 43, 44, 45, 46, 50, 51, 68, 89, 108, 133, 138, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181, 182, 183, 184, 187, 188, 197, 198, 199, 200, 203, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 229, 230, 235, 236, 237, 238, 241, 242, 245, 246, 249, 250, 257, 258, 261, 264, 265, 266, 267, 268, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 300, 301, 302, 303, 304, 305, 306, 321, 322, 323, 324, 325, 326, 329, 340, 345, 346, 347, 358, 359, 360, 362, 363, 364, 365, 366, 371, 372, 373, 376, 390, 391, 392, 393, 394, 401, 402, 403, 406, 407, 408, 409, 410, 411, 416, 417, 418, 425, 427, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 461, 462, 463, 466, 467, 471, 482, 488, 489, 490, 491, 494, 505, 506, 507, 508, 509, 510, 511, 516, 517, 526, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 544, 555, 558, 561, 566, 567, 568, 569, 574, 575, 576, 577, 578, 579, 580, 582, 583, 589, 591, 592, 595, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 624, 625, 626, 627, 633, 634, 644, 649, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 665, 668, 719, 736, 763, 773, 781, 782, 785, 786, 1065, 1066, 1360, 1396, 1446, 1502, 1539, 1576, 1616, 1630, 1633, 1634, 1644, 1647, 1651, 1662, 1668, 1669, 1670, 1671, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1684, 1685, 1686, 1689, 1695, 1696, 1697, 1698, 1699, 1700, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1718, 1727, 1735, 1742, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1766, 1767, 1769, 1770, 1771, 1773, 1774, 1782, 1783, 1784, 1785], "summary": {"covered_lines": 364, "num_statements": 369, "percent_covered": 97.76876267748479, "percent_covered_display": "98", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 98.6449864498645, "percent_statements_covered_display": "99", "num_branches": 124, "num_partial_branches": 6, "covered_branches": 118, "missing_branches": 6, "percent_branches_covered": 95.16129032258064, "percent_branches_covered_display": "95"}, "missing_lines": [320, 361, 590, 1705, 1706], "excluded_lines": [], "start_line": 1, "executed_branches": [[178, 179], [178, 180], [182, 183], [182, 184], [217, 218], [217, 219], [220, 221], [220, 222], [222, 223], [222, 224], [224, 225], [224, 226], [226, 227], [226, 229], [235, 236], [235, 237], [265, -261], [265, 266], [273, 274], [273, 280], [275, 276], [275, 277], [289, 290], [289, 291], [300, 301], [300, 302], [306, 321], [322, 323], [322, 324], [324, 325], [324, 326], [347, 358], [347, 359], [360, 362], [364, 365], [364, 366], [371, 372], [371, 373], [391, 392], [391, 393], [401, 402], [401, 403], [403, 406], [403, 407], [408, 409], [408, 410], [410, 411], [410, 417], [411, 416], [411, 447], [417, 418], [417, 427], [418, 425], [418, 447], [427, 437], [427, 438], [439, 440], [439, 441], [442, 443], [442, 445], [443, 444], [443, 447], [445, 446], [445, 447], [450, 451], [450, 452], [452, 453], [452, 454], [454, 455], [454, 456], [461, 462], [461, 463], [516, 517], [516, 541], [533, 534], [539, 540], [568, 569], [568, 592], [578, 579], [578, 582], [589, 591], [605, 606], [605, 607], [608, 609], [608, 610], [611, 612], [611, 615], [612, 613], [612, 614], [615, 616], [615, 617], [618, 624], [618, 625], [625, 626], [625, 627], [644, -595], [644, 649], [1669, -1662], [1669, 1670], [1671, 1675], [1671, 1676], [1677, 1669], [1677, 1678], [1684, 1685], [1684, 1686], [1697, 1698], [1697, 1714], [1709, 1710], [1709, 1712], [1714, 1715], [1756, 1757], [1756, 1758], [1762, 1766], [1762, 1767], [1770, -1769], [1770, 1771], [1782, 1783], [1782, 1784]], "missing_branches": [[306, 320], [360, 361], [533, 536], [539, 516], [589, 590], [1714, -1689]]}}}, "src\\quant_data_kit\\capture_v2\\models.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 74, 76, 80, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 123, 124, 127, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 157, 163, 165, 167, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 217, 219, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 338, 339, 340, 341, 348, 356, 357, 358, 359, 367, 368, 372, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 415, 416, 417, 419, 420, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 489, 492, 494, 495, 506, 509, 510, 511, 512, 513, 515, 516, 520, 524, 525, 542, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 563, 564, 565, 567, 568, 569, 571, 577, 578, 579, 585, 588, 592, 593, 594, 596, 599, 603, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 346, "num_statements": 354, "percent_covered": 96.62162162162163, "percent_covered_display": "97", "missing_lines": 8, "excluded_lines": 5, "percent_statements_covered": 97.74011299435028, "percent_statements_covered_display": "98", "num_branches": 90, "num_partial_branches": 7, "covered_branches": 83, "missing_branches": 7, "percent_branches_covered": 92.22222222222223, "percent_branches_covered_display": "92"}, "missing_lines": [77, 128, 164, 166, 168, 189, 517, 625], "excluded_lines": [67, 68, 69, 70, 71], "executed_branches": [[90, 91], [90, 92], [104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119], [138, 139], [138, 140], [140, -137], [140, 141], [163, 165], [165, 167], [167, -156], [186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212], [235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248], [261, 262], [261, 295], [295, 301], [295, 315], [339, 340], [339, 341], [367, 368], [367, 372], [392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474], [516, -515], [578, 579], [578, 592], [621, 622], [624, 633], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": [[163, 164], [165, 166], [167, 168], [188, 189], [516, 517], [621, 634], [624, 625]], "functions": {"utc_text": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "canonical_json_bytes": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "Clock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67], "start_line": 67, "executed_branches": [], "missing_branches": []}, "Clock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69], "start_line": 69, "executed_branches": [], "missing_branches": []}, "SystemClock.now": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73, "executed_branches": [], "missing_branches": []}, "SystemClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 76, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.__init__": {"executed_lines": [84, 85], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock.now": {"executed_lines": [88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy.__post_init__": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111]], "missing_branches": []}, "RetryPolicy.delay": {"executed_lines": [114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [[114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "random_jitter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [], "start_line": 127, "executed_branches": [], "missing_branches": []}, "SegmentRotation.__post_init__": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy.__post_init__": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 156, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig.__post_init__": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [189], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202]], "missing_branches": [[188, 189]]}, "StreamConfig.capability": {"executed_lines": [206, 207, 208, 209, 210, 212, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [[207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": []}, "StreamConfig.mapping_source": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217, "executed_branches": [], "missing_branches": []}, "CaptureConfig.__post_init__": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "CaptureConfig.providers": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureConfig.capabilities": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "default_crypto_l2_streams": {"executed_lines": [260, 261, 262, 263, 278, 295, 301, 302, 303, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315]], "missing_branches": []}, "default_symbol_mappings": {"executed_lines": [323, 324], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318, "executed_branches": [], "missing_branches": []}, "SymbolMappingResolver.__init__": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "SymbolMappingResolver.resolve": {"executed_lines": [356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348, "executed_branches": [[367, 368], [367, 372]], "missing_branches": []}, "RawFrame.__post_init__": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409]], "missing_branches": []}, "RawFrame.raw_sha256": {"executed_lines": [417], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416, "executed_branches": [], "missing_branches": []}, "RawFrame.record": {"executed_lines": [420], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419, "executed_branches": [], "missing_branches": []}, "RawFrame.from_record": {"executed_lines": [441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent.__post_init__": {"executed_lines": [489, 492], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [], "missing_branches": []}, "AuditEvent.payload": {"executed_lines": [495, 506], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "AuditReference.__post_init__": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 515, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "CaptureStateMachine.__init__": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.events": {"executed_lines": [565], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.references": {"executed_lines": [569], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 568, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine.transition": {"executed_lines": [577, 578, 579, 585, 588, 592, 593, 594], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 571, "executed_branches": [[578, 579], [578, 592]], "missing_branches": []}, "CaptureStateMachine.audit": {"executed_lines": [599], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine._record": {"executed_lines": [610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [625], "excluded_lines": [], "start_line": 603, "executed_branches": [[621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "assert_m7_scope": {"executed_lines": [639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 638, "executed_branches": [[642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655]], "missing_branches": []}, "_validate_public_url": {"executed_lines": [664, 665, 672], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663, "executed_branches": [[665, -663], [665, 672]], "missing_branches": []}, "_canonical_url_identity": {"executed_lines": [678, 679], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_m7_stream_identity": {"executed_lines": [689], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 688, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 56, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 318, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 663, 675, 688], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "MarketKind": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "CaptureState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": []}, "Clock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [67, 69], "start_line": 66, "executed_branches": [], "missing_branches": []}, "SystemClock": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [77], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "MonotonicReceivedClock": {"executed_lines": [84, 85, 88, 89, 90, 91, 92, 93], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[90, 91], [90, 92]], "missing_branches": []}, "RetryPolicy": {"executed_lines": [104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 123, 124], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[104, 105], [104, 106], [106, 107], [106, 108], [108, 109], [108, 110], [110, -103], [110, 111], [114, 115], [114, 116], [117, 118], [117, 119]], "missing_branches": []}, "SegmentRotation": {"executed_lines": [138, 139, 140, 141], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[138, 139], [138, 140], [140, -137], [140, 141]], "missing_branches": []}, "CaptureDurabilityPolicy": {"executed_lines": [157, 163, 165, 167], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 6, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 3, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [164, 166, 168], "excluded_lines": [], "start_line": 145, "executed_branches": [[163, 165], [165, 167], [167, -156]], "missing_branches": [[163, 164], [165, 166], [167, 168]]}, "StreamConfig": {"executed_lines": [186, 187, 188, 190, 191, 192, 193, 194, 199, 200, 201, 202, 206, 207, 208, 209, 210, 212, 213, 214, 219], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [189], "excluded_lines": [], "start_line": 172, "executed_branches": [[186, 187], [186, 190], [188, 186], [191, 192], [191, 199], [192, 193], [192, 194], [199, 200], [199, 201], [201, -185], [201, 202], [207, 208], [207, 209], [209, 210], [209, 212]], "missing_branches": [[188, 189]]}, "CaptureConfig": {"executed_lines": [235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223, "executed_branches": [[235, 236], [235, 240], [237, 238], [237, 239], [240, 241], [240, 242], [242, 243], [242, 244], [245, 246], [245, 247], [247, -234], [247, 248]], "missing_branches": []}, "SymbolMappingResolver": {"executed_lines": [338, 339, 340, 341, 356, 357, 358, 359, 367, 368, 372], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [[339, 340], [339, 341], [367, 368], [367, 372]], "missing_branches": []}, "RawFrame": {"executed_lines": [392, 393, 394, 397, 398, 399, 400, 405, 406, 407, 408, 409, 410, 411, 412, 413, 417, 420, 441, 442, 443, 444, 445, 446, 447, 448, 453, 468, 469, 470, 473, 474], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376, "executed_branches": [[392, 393], [392, 394], [394, 397], [394, 398], [405, 406], [405, 407], [407, 408], [407, 409], [441, 442], [441, 443], [470, 473], [470, 474]], "missing_branches": []}, "AuditEvent": {"executed_lines": [489, 492, 495, 506], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 478, "executed_branches": [], "missing_branches": []}, "AuditReference": {"executed_lines": [516], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [517], "excluded_lines": [], "start_line": 510, "executed_branches": [[516, -515]], "missing_branches": [[516, 517]]}, "AuditPersistenceError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 520, "executed_branches": [], "missing_branches": []}, "CaptureStateMachine": {"executed_lines": [552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 565, 569, 577, 578, 579, 585, 588, 592, 593, 594, 599, 610, 611, 621, 622, 623, 624, 626, 627, 630, 633, 634, 635], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 92.5, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [625], "excluded_lines": [], "start_line": 524, "executed_branches": [[578, 579], [578, 592], [621, 622], [624, 633]], "missing_branches": [[621, 634], [624, 625]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 33, 34, 35, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 56, 57, 66, 72, 73, 76, 80, 83, 87, 96, 97, 98, 99, 100, 101, 103, 113, 127, 131, 132, 133, 134, 135, 137, 144, 145, 148, 149, 150, 151, 152, 153, 154, 156, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 204, 205, 216, 217, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 250, 251, 254, 255, 259, 260, 261, 262, 263, 278, 295, 301, 302, 303, 315, 318, 323, 324, 336, 337, 348, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 415, 416, 419, 439, 440, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 488, 494, 509, 510, 511, 512, 513, 515, 520, 524, 525, 542, 563, 564, 567, 568, 571, 596, 603, 638, 639, 640, 641, 642, 643, 646, 647, 648, 649, 652, 653, 654, 655, 656, 657, 663, 664, 665, 672, 675, 678, 679, 688, 689], "summary": {"covered_lines": 195, "num_statements": 196, "percent_covered": 99.52380952380952, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 3, "percent_statements_covered": 99.48979591836735, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [128], "excluded_lines": [68, 70, 71], "start_line": 1, "executed_branches": [[261, 262], [261, 295], [295, 301], [295, 315], [642, 643], [642, 646], [646, 647], [646, 648], [648, 649], [648, 652], [654, -638], [654, 655], [665, -663], [665, 672]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 61, 62, 63, 64, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 204, 207, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 398, 399, 400, 401, 411, 412, 413, 415, 416, 422, 423, 424, 426, 427, 428, 429, 430, 432, 433, 434, 436, 437, 438, 440, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 467, 468, 469, 470, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 516, 517, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 544, 545, 546, 547, 549, 550, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737, 740, 741, 742, 750, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781, 784, 787, 796, 797, 798, 799, 800, 801, 802, 809, 810, 812, 813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 851, 854, 863, 864, 865, 866, 867, 868, 870, 871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942, 944, 945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042, 1051, 1052, 1053, 1054, 1055, 1056, 1059, 1060, 1065, 1066, 1067, 1068, 1069, 1071, 1072, 1080, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 621, "num_statements": 659, "percent_covered": 93.83647798742139, "percent_covered_display": "94", "missing_lines": 38, "excluded_lines": 6, "percent_statements_covered": 94.23368740515933, "percent_statements_covered_display": "94", "num_branches": 136, "num_partial_branches": 5, "covered_branches": 125, "missing_branches": 11, "percent_branches_covered": 91.91176470588235, "percent_branches_covered_display": "92"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 728, 730, 733, 743, 744, 745, 747, 882, 883, 888, 889, 947, 991, 992], "excluded_lines": [68, 69, 70, 72, 73, 74], "executed_branches": [[62, 63], [62, 64], [94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467], [525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [722, 723], [722, 731], [732, 734], [741, 742], [753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781], [813, 814], [813, 815], [831, 832], [831, 833], [842, 843], [842, 844], [846, 847], [846, 848], [871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918], [946, 948], [1009, 1010], [1009, 1011], [1059, -1051], [1059, 1060], [1067, 1068], [1067, 1069], [1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [732, 733], [741, 743], [780, -750], [946, 947]], "functions": {"VolumeIdentity.__post_init__": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 68, "executed_branches": [], "missing_branches": []}, "CapacityProbe.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 72, "executed_branches": [], "missing_branches": []}, "default_capacity_probe": {"executed_lines": [76, 77], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity": {"executed_lines": [81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145]], "missing_branches": []}, "_linux_physical_devices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 6, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174], "excluded_lines": [], "start_line": 154, "executed_branches": [], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166]]}, "default_volume_identity": {"executed_lines": [178, 179, 180], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [181, 182], "excluded_lines": [], "start_line": 177, "executed_branches": [[179, 180]], "missing_branches": [[179, 181]]}, "StoragePreflight.alert": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.__init__": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [[229, 230], [229, 231]], "missing_branches": []}, "CaptureStorageGuard._tree_size": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._minimum_free": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.preflight": {"executed_lines": [262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335]], "missing_branches": []}, "CaptureStorageGuard.require_preflight": {"executed_lines": [338, 339, 340, 341], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [[339, 340], [339, 341]], "missing_branches": []}, "CaptureStorageGuard.require_hot_capacity": {"executed_lines": [344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366]], "missing_branches": []}, "CaptureStorageGuard.require_archive_capacity": {"executed_lines": [371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394]], "missing_branches": []}, "CaptureStorageGuard.probe_statistics": {"executed_lines": [400, 401], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard.force_hot_probe": {"executed_lines": [412, 413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_due": {"executed_lines": [416], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_capacity": {"executed_lines": [423, 424], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._probe_hot_size": {"executed_lines": [427, 428, 429, 430], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 426, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard._ensure_hot_baseline": {"executed_lines": [433, 434], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [[433, -432], [433, 434]], "missing_branches": []}, "CaptureStorageGuard._ensure_archive_baseline": {"executed_lines": [437, 438], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [[437, -436], [437, 438]], "missing_branches": []}, "CaptureStorageGuard._refresh_hot": {"executed_lines": [441, 442, 443, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[451, 452], [451, 453]], "missing_branches": []}, "CaptureStorageGuard._refresh_archive": {"executed_lines": [460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459, "executed_branches": [[462, 463], [462, 467]], "missing_branches": []}, "RawSegmentWriter.__init__": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 491, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.pending_messages": {"executed_lines": [518], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.segment_count": {"executed_lines": [522], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.append": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542]], "missing_branches": []}, "RawSegmentWriter.drain_completed": {"executed_lines": [545, 546, 547], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.peek_completed": {"executed_lines": [550], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 549, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter.acknowledge_completed": {"executed_lines": [553, 554, 555], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552, "executed_branches": [[553, 554], [553, 555]], "missing_branches": []}, "RawSegmentWriter.flush": {"executed_lines": [558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557, "executed_branches": [[558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "_sha256_file": {"executed_lines": [668, 669, 670, 671, 672], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[670, 671], [670, 672]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [676, 677, 678, 679, 680, 681, 682], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [[676, 677], [676, 678]], "missing_branches": []}, "_validate_safe_path": {"executed_lines": [686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [708, 709, 713, 714], "excluded_lines": [], "start_line": 685, "executed_branches": [[688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706]], "missing_branches": []}, "_safe_mkdir": {"executed_lines": [719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [728, 730, 733], "excluded_lines": [], "start_line": 718, "executed_branches": [[722, 723], [722, 731], [732, 734]], "missing_branches": [[732, 733]]}, "_fsync_directory": {"executed_lines": [741, 742], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [743, 744, 745, 747], "excluded_lines": [], "start_line": 740, "executed_branches": [[741, 742]], "missing_branches": [[741, 743]]}, "_atomic_immutable_write": {"executed_lines": [753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 750, "executed_branches": [[753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781]], "missing_branches": [[780, -750]]}, "DurableAuditStore.__init__": {"executed_lines": [796, 797, 798, 799, 800, 801, 802, 809, 810], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 787, "executed_branches": [], "missing_branches": []}, "DurableAuditStore.append": {"executed_lines": [813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 812, "executed_branches": [[813, 814], [813, 815], [831, 832], [831, 833]], "missing_branches": []}, "DurableAuditStore.load": {"executed_lines": [837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [[842, 843], [842, 844], [846, 847], [846, 848]], "missing_branches": []}, "LocalArchiveController.__init__": {"executed_lines": [863, 864, 865, 866, 867, 868], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 854, "executed_branches": [], "missing_branches": []}, "LocalArchiveController.preflight": {"executed_lines": [871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942], "summary": {"covered_lines": 32, "num_statements": 36, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [882, 883, 888, 889], "excluded_lines": [], "start_line": 870, "executed_branches": [[871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918]], "missing_branches": []}, "LocalArchiveController.archive_segment": {"executed_lines": [945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042], "summary": {"covered_lines": 44, "num_statements": 47, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.61702127659575, "percent_statements_covered_display": "94", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [947, 991, 992], "excluded_lines": [], "start_line": 944, "executed_branches": [[946, 948], [1009, 1010], [1009, 1011]], "missing_branches": [[946, 947]]}, "LocalArchiveController._assert_identity": {"executed_lines": [1052, 1053, 1054, 1055, 1056, 1059, 1060], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1051, "executed_branches": [[1059, -1051], [1059, 1060]], "missing_branches": []}, "LocalArchiveController._remove_restore_temp": {"executed_lines": [1066, 1067, 1068, 1069], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1065, "executed_branches": [[1067, 1068], [1067, 1069]], "missing_branches": []}, "LocalArchiveController._hot_object_dir": {"executed_lines": [1072, 1080], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1071, "executed_branches": [], "missing_branches": []}, "iter_segment_frames": {"executed_lines": [1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1083, "executed_branches": [[1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 80, 154, 177, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 675, 685, 718, 740, 750, 784, 787, 812, 836, 851, 854, 870, 944, 1051, 1065, 1071, 1083], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CapturePausedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "DiskCapacity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "VolumeIdentity": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[62, 63], [62, 64]], "missing_branches": []}, "VolumeIdentityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68], "start_line": 67, "executed_branches": [], "missing_branches": []}, "CapacityProbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [72], "start_line": 71, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.DiskExtent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83, "executed_branches": [], "missing_branches": []}, "_windows_volume_identity.VolumeDiskExtents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "StoragePreflight": {"executed_lines": [201], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189, "executed_branches": [], "missing_branches": []}, "CaptureStorageGuard": {"executed_lines": [222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, 256, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 302, 303, 304, 305, 310, 311, 312, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 354, 355, 356, 364, 365, 366, 367, 368, 371, 372, 373, 374, 375, 376, 381, 382, 383, 384, 389, 390, 394, 395, 396, 400, 401, 412, 413, 416, 423, 424, 427, 428, 429, 430, 433, 434, 437, 438, 441, 442, 443, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 467, 468, 469, 470], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 40, "num_partial_branches": 0, "covered_branches": 40, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [[229, 230], [229, 231], [266, 267], [266, 276], [267, 268], [267, 269], [269, 270], [269, 272], [276, 277], [276, 278], [283, 284], [283, 289], [287, 288], [287, 289], [304, 305], [304, 312], [322, 323], [322, 335], [339, 340], [339, 341], [344, 345], [344, 346], [349, 354], [349, 355], [364, 365], [364, 366], [371, 372], [371, 373], [376, 381], [376, 382], [389, 390], [389, 394], [433, -432], [433, 434], [437, -436], [437, 438], [451, 452], [451, 453], [462, 463], [462, 467]], "missing_branches": []}, "RawSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474, "executed_branches": [], "missing_branches": []}, "RawSegmentWriter": {"executed_lines": [502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 518, 522, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 542, 545, 546, 547, 550, 553, 554, 555, 558, 559, 560, 561, 562, 563, 564, 565, 566, 570, 571, 572, 573, 574, 575, 598, 599, 600, 609, 622, 623, 624, 625, 626, 627, 628], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488, "executed_branches": [[525, 526], [525, 527], [527, 528], [527, 529], [531, 532], [531, 535], [533, 534], [533, 535], [538, -524], [538, 542], [553, 554], [553, 555], [558, 559], [558, 560], [563, 564], [563, 570], [564, 563], [564, 565]], "missing_branches": []}, "ArchivePreflightReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 632, "executed_branches": [], "missing_branches": []}, "SegmentArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [], "missing_branches": []}, "DurableAuditStore": {"executed_lines": [796, 797, 798, 799, 800, 801, 802, 809, 810, 813, 814, 815, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 784, "executed_branches": [[813, 814], [813, 815], [831, 832], [831, 833], [842, 843], [842, 844], [846, 847], [846, 848]], "missing_branches": []}, "LocalArchiveController": {"executed_lines": [863, 864, 865, 866, 867, 868, 871, 876, 877, 880, 881, 884, 885, 886, 887, 892, 893, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 915, 916, 917, 918, 927, 928, 931, 941, 942, 945, 946, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 964, 965, 966, 967, 968, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 989, 990, 996, 997, 1003, 1009, 1010, 1011, 1031, 1032, 1033, 1039, 1042, 1052, 1053, 1054, 1055, 1056, 1059, 1060, 1066, 1067, 1068, 1069, 1072, 1080], "summary": {"covered_lines": 95, "num_statements": 102, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 93.13725490196079, "percent_statements_covered_display": "93", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [882, 883, 888, 889, 947, 991, 992], "excluded_lines": [], "start_line": 851, "executed_branches": [[871, 876], [871, 884], [876, 877], [876, 880], [916, 917], [916, 918], [946, 948], [1009, 1010], [1009, 1011], [1059, -1051], [1059, 1060], [1067, 1068], [1067, 1069]], "missing_branches": [[946, 947]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 30, 37, 38, 40, 41, 42, 45, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 71, 75, 76, 77, 80, 81, 83, 84, 90, 91, 93, 94, 95, 96, 97, 98, 107, 108, 117, 118, 119, 120, 121, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 154, 177, 178, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 204, 207, 250, 251, 254, 255, 261, 337, 343, 370, 398, 399, 411, 415, 422, 426, 432, 436, 440, 459, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 488, 491, 516, 517, 520, 521, 524, 544, 549, 552, 557, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 675, 676, 677, 678, 679, 680, 681, 682, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 710, 711, 712, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 731, 732, 734, 735, 736, 737, 740, 741, 742, 750, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 780, 781, 784, 787, 812, 836, 851, 854, 870, 944, 1051, 1065, 1071, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092], "summary": {"covered_lines": 277, "num_statements": 308, "percent_covered": 88.67403314917127, "percent_covered_display": "89", "missing_lines": 31, "excluded_lines": 4, "percent_statements_covered": 89.93506493506493, "percent_statements_covered_display": "90", "num_branches": 54, "num_partial_branches": 4, "covered_branches": 44, "missing_branches": 10, "percent_branches_covered": 81.48148148148148, "percent_branches_covered_display": "81"}, "missing_lines": [155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 174, 181, 182, 708, 709, 713, 714, 728, 730, 733, 743, 744, 745, 747], "excluded_lines": [69, 70, 73, 74], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [118, 119], [118, 120], [133, 134], [133, 135], [136, 137], [136, 138], [141, 142], [141, 147], [143, 144], [143, 145], [179, 180], [670, 671], [670, 672], [676, 677], [676, 678], [688, 689], [688, 690], [690, 691], [690, 692], [698, 699], [698, 710], [700, 701], [700, 704], [701, 702], [701, 703], [704, 705], [704, 706], [722, 723], [722, 731], [732, 734], [741, 742], [753, 754], [753, 755], [766, 767], [766, 768], [775, 776], [775, 780], [780, 781], [1085, -1083], [1085, 1086], [1086, 1087], [1086, 1088]], "missing_branches": [[158, 159], [158, 160], [162, 163], [162, 166], [164, 165], [164, 166], [179, 181], [732, 733], [741, 743], [780, -750]]}}}, "src\\quant_data_kit\\capture_v2\\synchronizers.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 180, 181, 184, 187, 188, 189, 190, 191, 192, 204, 205, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 330, 331, 332, 338, 339, 340, 341, 344, 347, 348, 349, 350, 351, 352, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 409, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 278, "num_statements": 302, "percent_covered": 93.87755102040816, "percent_covered_display": "94", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 92.05298013245033, "percent_statements_covered_display": "92", "num_branches": 90, "num_partial_branches": 0, "covered_branches": 90, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98, 250, 251, 323, 324, 422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101], [112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174], [188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341], [348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": [], "functions": {"_json_object": {"executed_lines": [48, 49, 52, 53, 54, 55, 56], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 47, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56]], "missing_branches": []}, "_received_milliseconds": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "_provider_event_milliseconds": {"executed_lines": [65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [70, 71], "excluded_lines": [], "start_line": 64, "executed_branches": [[65, 66], [65, 72], [67, 65], [67, 68]], "missing_branches": []}, "_utc_event_datetime": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80, 81], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "_price": {"executed_lines": [85, 86, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [87, 88], "excluded_lines": [], "start_line": 84, "executed_branches": [[89, 90], [89, 91]], "missing_branches": []}, "_quantity": {"executed_lines": [95, 96, 99, 100, 101], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [97, 98], "excluded_lines": [], "start_line": 94, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "_TrackedBook.__init__": {"executed_lines": [106, 107], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "_TrackedBook.snapshot": {"executed_lines": [110, 111, 112, 113, 114], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [[112, 113], [112, 114]], "missing_branches": []}, "_TrackedBook._snapshot_side": {"executed_lines": [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117, "executed_branches": [[119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128]], "missing_branches": []}, "_TrackedBook.filter_delta": {"executed_lines": [138, 139, 140, 141, 142, 143, 144, 145], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[143, 144], [143, 145]], "missing_branches": []}, "_TrackedBook._filter_side": {"executed_lines": [154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "_TrackedBook.commit": {"executed_lines": [181], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.__init__": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187, "executed_branches": [[188, 189], [188, 190]], "missing_branches": []}, "BinanceBookSynchronizer.live": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_snapshot": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "BinanceBookSynchronizer.admit_update": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328], "summary": {"covered_lines": 42, "num_statements": 46, "percent_covered": 93.93939393939394, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 20, "num_partial_branches": 0, "covered_branches": 20, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 241, "executed_branches": [[242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301]], "missing_branches": []}, "BinanceBookSynchronizer._assert_mapping": {"executed_lines": [331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330, "executed_branches": [[340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer.__init__": {"executed_lines": [348, 349, 350, 351, 352, 363, 364], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347, "executed_branches": [[348, 349], [348, 350]], "missing_branches": []}, "OKXBookSynchronizer.live": {"executed_lines": [368], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "OKXBookSynchronizer.admit_message": {"executed_lines": [371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370, "executed_branches": [[372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403]], "missing_branches": []}, "OKXBookSynchronizer._admit_item": {"executed_lines": [415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 47, "num_statements": 57, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 82.45614035087719, "percent_statements_covered_display": "82", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 409, "executed_branches": [[415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 59, 64, 75, 84, 94, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"ResyncRequired": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "Observation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "NormalizationOutcome": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "_TrackedBook": {"executed_lines": [106, 107, 110, 111, 112, 113, 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 138, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, 174, 176, 177, 178, 181], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104, "executed_branches": [[112, 113], [112, 114], [119, 120], [119, 129], [120, 121], [120, 122], [124, 125], [124, 126], [126, 127], [126, 128], [143, 144], [143, 145], [156, 157], [156, 178], [157, 158], [157, 159], [161, 162], [161, 163], [164, 165], [164, 176], [165, 166], [165, 174]], "missing_branches": []}, "BinanceBookSynchronizer": {"executed_lines": [188, 189, 190, 191, 192, 204, 205, 206, 207, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 235, 236, 237, 238, 239, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 269, 270, 274, 276, 277, 286, 287, 288, 289, 290, 291, 292, 296, 297, 301, 302, 303, 304, 305, 306, 307, 310, 311, 321, 322, 325, 326, 327, 328, 331, 332, 338, 339, 340, 341], "summary": {"covered_lines": 75, "num_statements": 79, "percent_covered": 96.11650485436893, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.9367088607595, "percent_statements_covered_display": "95", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [250, 251, 323, 324], "excluded_lines": [], "start_line": 184, "executed_branches": [[188, 189], [188, 190], [242, 243], [242, 244], [245, 246], [245, 247], [252, 253], [252, 254], [254, 255], [254, 276], [255, 256], [255, 269], [269, 270], [269, 274], [276, 277], [276, 286], [286, 287], [286, 296], [291, 292], [291, 301], [296, 297], [296, 301], [340, -330], [340, 341]], "missing_branches": []}, "OKXBookSynchronizer": {"executed_lines": [348, 349, 350, 351, 352, 363, 364, 368, 371, 372, 373, 374, 375, 378, 387, 388, 389, 390, 391, 392, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 415, 416, 417, 418, 419, 420, 421, 424, 425, 426, 434, 435, 436, 444, 445, 446, 453, 454, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 475, 476, 477, 478, 479, 482, 493, 494, 495, 496, 497, 500, 501, 502], "summary": {"covered_lines": 79, "num_statements": 89, "percent_covered": 91.73553719008264, "percent_covered_display": "92", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.76404494382022, "percent_statements_covered_display": "89", "num_branches": 32, "num_partial_branches": 0, "covered_branches": 32, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [422, 423, 432, 433, 457, 458, 480, 481, 498, 499], "excluded_lines": [], "start_line": 344, "executed_branches": [[348, 349], [348, 350], [372, 373], [372, 387], [374, 375], [374, 378], [390, 391], [390, 392], [392, 396], [392, 397], [400, 401], [400, 407], [401, 402], [401, 403], [415, 416], [415, 417], [434, 435], [434, 436], [445, 446], [445, 453], [453, 454], [453, 461], [461, 462], [461, 463], [463, 464], [463, 470], [470, 471], [470, 475], [475, 476], [475, 493], [476, 477], [476, 478]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 26, 29, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 56, 59, 61, 64, 65, 66, 67, 68, 69, 72, 75, 76, 78, 79, 84, 85, 86, 89, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 109, 116, 117, 131, 147, 148, 180, 184, 187, 209, 210, 213, 241, 330, 344, 347, 366, 367, 370, 409], "summary": {"covered_lines": 78, "num_statements": 88, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51, 70, 71, 80, 81, 87, 88, 97, 98], "excluded_lines": [], "start_line": 1, "executed_branches": [[52, 53], [52, 54], [54, 55], [54, 56], [65, 66], [65, 72], [67, 65], [67, 68], [89, 90], [89, 91], [99, 100], [99, 101]], "missing_branches": []}}}, "src\\quant_data_kit\\capture_v2\\transport.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 41, 42, 43, 45, 46, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 68, 69, 70, 72, 73, 75, 76, 77, 81, 82, 83, 84, 85, 86, 87, 91, 92, 95, 98, 99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 13, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36], "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65], [83, 84], [83, 85], [85, 86], [85, 87], [99, 100], [99, 101]], "missing_branches": [], "functions": {"HttpClient.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 22, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 26, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [28], "start_line": 28, "executed_branches": [], "missing_branches": []}, "WebSocketConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30], "start_line": 30, "executed_branches": [], "missing_branches": []}, "WebSocketConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 34, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient.get": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[41, 42], [41, 43]], "missing_branches": []}, "UrllibHttpClient._get": {"executed_lines": [47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [[61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection.__init__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.send": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_WebsocketsConnection.receive": {"executed_lines": [76, 77, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "_WebsocketsConnection.close": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "WebsocketsConnector.connect": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"HttpResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "HttpClient": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22], "start_line": 21, "executed_branches": [], "missing_branches": []}, "WebSocketConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26, 28, 30], "start_line": 25, "executed_branches": [], "missing_branches": []}, "WebSocketConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34], "start_line": 33, "executed_branches": [], "missing_branches": []}, "UrllibHttpClient": {"executed_lines": [41, 42, 43, 47, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[41, 42], [41, 43], [61, 62], [61, 63], [63, 64], [63, 65]], "missing_branches": []}, "_WebsocketsConnection": {"executed_lines": [70, 73, 76, 77, 81, 82, 83, 84, 85, 86, 87, 92], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87]], "missing_branches": []}, "WebsocketsConnector": {"executed_lines": [99, 100, 101, 102, 104, 112, 113, 116], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[99, 100], [99, 101]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 21, 25, 33, 37, 40, 45, 46, 68, 69, 72, 75, 91, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24, 27, 29, 31, 32, 35, 36], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\catalog.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 52, 56, 57, 58, 62, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 88, 89, 91], "summary": {"covered_lines": 58, "num_statements": 62, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.54838709677419, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]], "functions": {"DataCatalog.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [[31, 32], [31, 36]], "missing_branches": []}, "DataCatalog.ensure_default_stack": {"executed_lines": [41, 42, 43, 44, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [[42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47]], "missing_branches": []}, "DataCatalog.list_stack_dependencies": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "DataCatalog.register_stack_dependency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [53, 54], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "DataCatalog.save": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "DataCatalog.register": {"executed_lines": [65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[70, 71]], "missing_branches": [[70, 74]]}, "DataCatalog.list": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "DataCatalog.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [92, 93], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "DataCatalog": {"executed_lines": [29, 30, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 50, 57, 58, 65, 66, 67, 69, 70, 71, 72, 74, 84, 85, 86, 89], "summary": {"covered_lines": 31, "num_statements": 35, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.57142857142857, "percent_statements_covered_display": "89", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [53, 54, 92, 93], "excluded_lines": [], "start_line": 25, "executed_branches": [[31, 32], [31, 36], [42, 43], [42, 46], [43, 42], [43, 44], [46, -40], [46, 47], [70, 71]], "missing_branches": [[70, 74]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 40, 49, 52, 56, 62, 88, 91], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\cli.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]], "functions": {"main_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "main_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [27, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "main_catalog": {"executed_lines": [36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [55, 56, 57], "excluded_lines": [], "start_line": 35, "executed_branches": [[54, 59]], "missing_branches": [[54, 55]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 68], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [69], "excluded_lines": [], "start_line": 1, "executed_branches": [[68, -1]], "missing_branches": [[68, 69]]}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 14, 26, 35, 36, 38, 41, 42, 44, 45, 46, 47, 49, 51, 52, 54, 59, 60, 64, 65, 68], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 60.416666666666664, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [15, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 55, 56, 57, 69], "excluded_lines": [], "start_line": 1, "executed_branches": [[54, 59], [68, -1]], "missing_branches": [[54, 55], [68, 69]]}}}, "src\\quant_data_kit\\curated.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 4, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 48, 49, 50], "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]], "functions": {"Curator.curate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_canonical": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "_hash_bytes": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "_hash_file": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [[94, 95], [94, 96]], "missing_branches": []}, "_json_value": {"executed_lines": [100, 101, 102, 103, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [105], "excluded_lines": [], "start_line": 99, "executed_branches": [[100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108]], "missing_branches": [[104, 105]]}, "_dataset_segment": {"executed_lines": [112, 113, 114, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [[112, 113], [112, 114], [114, 127], [114, 128]], "missing_branches": []}, "_revision_segment": {"executed_lines": [132, 133, 134, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [], "missing_branches": []}, "_utc": {"executed_lines": [139, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[144, 145], [144, 146]], "missing_branches": []}, "_utc_text": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149, "executed_branches": [], "missing_branches": []}, "_fixed_decimal": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [], "missing_branches": []}, "_fixed": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "build_session_bars": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161, "executed_branches": [[171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244]], "missing_branches": []}, "_arrow_ready_bar": {"executed_lines": [248, 249, 250, 251, 252, 255, 256, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247, "executed_branches": [[250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256]], "missing_branches": []}, "_snapshot_identity": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": []}, "_revision_record": {"executed_lines": [284, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283, "executed_branches": [], "missing_branches": []}, "_validate_revision_record": {"executed_lines": [299, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295, "executed_branches": [[301, 302], [301, 303], [304, -295], [304, 305]], "missing_branches": []}, "_recover_missing_revision": {"executed_lines": [318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 85.18518518518519, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [320, 324], "excluded_lines": [], "start_line": 311, "executed_branches": [[319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337]], "missing_branches": [[319, 320], [323, 324]]}, "_publish_curated_snapshot": {"executed_lines": [357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [389], "excluded_lines": [], "start_line": 349, "executed_branches": [[364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399]], "missing_branches": [[388, 389]]}, "_write_curated_bars": {"executed_lines": [413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [[416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472]], "missing_branches": []}, "curate_trade_bars_from_snapshot": {"executed_lines": [524, 525, 526, 527, 528, 529, 536], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [[527, 528], [527, 529]], "missing_branches": []}, "_load_curated_snapshot": {"executed_lines": [554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652], "summary": {"covered_lines": 59, "num_statements": 61, "percent_covered": 95.87628865979381, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.72131147540983, "percent_statements_covered_display": "97", "num_branches": 36, "num_partial_branches": 2, "covered_branches": 34, "missing_branches": 2, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [620, 624], "excluded_lines": [], "start_line": 547, "executed_branches": [[556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[619, 620], [623, 624]]}, "load_curated_snapshot": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 87, 91, 99, 111, 131, 138, 149, 153, 157, 161, 247, 262, 283, 295, 311, 349, 402, 511, 547, 655], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"Curator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [48], "start_line": 45, "executed_branches": [], "missing_branches": []}, "CuratedPartition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "CuratedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 32, 33, 34, 35, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 77, 78, 87, 88, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 127, 128, 131, 132, 133, 134, 135, 138, 139, 144, 145, 146, 149, 150, 153, 154, 157, 158, 161, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 193, 195, 196, 199, 200, 201, 202, 203, 204, 205, 209, 213, 219, 220, 240, 241, 242, 243, 244, 247, 248, 249, 250, 251, 252, 255, 256, 259, 262, 271, 283, 284, 291, 292, 295, 299, 300, 301, 302, 303, 304, 305, 311, 318, 319, 321, 322, 323, 325, 331, 332, 333, 334, 335, 336, 337, 342, 346, 349, 357, 358, 359, 360, 361, 362, 363, 364, 365, 370, 375, 381, 382, 388, 391, 392, 393, 394, 399, 402, 413, 414, 415, 416, 417, 418, 419, 423, 424, 425, 426, 427, 428, 429, 431, 432, 437, 438, 439, 440, 441, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 472, 473, 476, 484, 485, 486, 499, 503, 511, 524, 525, 526, 527, 528, 529, 536, 547, 554, 555, 556, 557, 558, 563, 568, 569, 570, 571, 572, 573, 579, 580, 581, 585, 586, 590, 591, 592, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, 643, 648, 652, 655, 656], "summary": {"covered_lines": 290, "num_statements": 296, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.97297297297297, "percent_statements_covered_display": "98", "num_branches": 100, "num_partial_branches": 6, "covered_branches": 94, "missing_branches": 6, "percent_branches_covered": 94.0, "percent_branches_covered_display": "94"}, "missing_lines": [105, 320, 324, 389, 620, 624], "excluded_lines": [47, 49, 50], "start_line": 1, "executed_branches": [[94, 95], [94, 96], [100, 101], [100, 102], [102, 103], [102, 104], [104, 106], [106, 107], [106, 108], [112, 113], [112, 114], [114, 127], [114, 128], [144, 145], [144, 146], [171, 172], [171, 173], [174, 175], [174, 195], [178, 179], [178, 180], [183, 184], [183, 185], [196, 199], [196, 244], [250, 251], [250, 259], [251, 252], [251, 255], [255, 250], [255, 256], [301, 302], [301, 303], [304, -295], [304, 305], [319, 321], [322, 323], [322, 335], [323, 325], [331, 332], [331, 333], [335, 336], [335, 337], [364, 365], [364, 375], [381, 382], [381, 391], [388, 393], [393, 394], [393, 399], [416, 417], [416, 418], [424, 425], [424, 426], [427, 428], [427, 431], [447, 448], [447, 472], [527, 528], [527, 529], [556, 557], [556, 558], [568, 569], [568, 570], [573, 579], [573, 580], [581, 585], [581, 586], [590, 591], [590, 592], [601, 602], [601, 603], [606, 607], [606, 635], [607, 608], [607, 609], [610, 611], [610, 612], [616, 617], [616, 618], [619, 621], [623, 625], [625, 626], [625, 627], [629, 630], [629, 631], [632, 633], [632, 634], [635, 636], [635, 637], [640, 641], [640, 642], [642, 643], [642, 652]], "missing_branches": [[104, 105], [319, 320], [323, 324], [388, 389], [619, 620], [623, 624]]}}}, "src\\quant_data_kit\\data_lake.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 222, 223, 224, 226, 227, 229, 230, 232, 234, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, 268, 269, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017, 2020, 2023, 2024, 2026, 2027, 2028], "summary": {"covered_lines": 1066, "num_statements": 1115, "percent_covered": 94.28379287155346, "percent_covered_display": "94", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 95.60538116591928, "percent_statements_covered_display": "96", "num_branches": 372, "num_partial_branches": 32, "covered_branches": 336, "missing_branches": 36, "percent_branches_covered": 90.3225806451613, "percent_branches_covered_display": "90"}, "missing_lines": [259, 388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88], [237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266], [318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958], [1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": [[256, 259], [387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]], "functions": {"StoragePolicy.__post_init__": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "RawObjectManifest.reference": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__init__": {"executed_lines": [222, 223, 224], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__len__": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__iter__": {"executed_lines": [230, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "EventClaimSequence.__getitem__": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [259], "excluded_lines": [], "start_line": 234, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258]], "missing_branches": [[256, 259]]}, "EventClaimSequence.__eq__": {"executed_lines": [262, 263, 264, 265, 266], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261, "executed_branches": [[262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": []}, "EventClaimSequence.__repr__": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268, "executed_branches": [], "missing_branches": []}, "_canonical_json_bytes": {"executed_lines": [307], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306, "executed_branches": [], "missing_branches": []}, "_json_evidence": {"executed_lines": [318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332]], "missing_branches": []}, "_sha256_bytes": {"executed_lines": [340], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "_sha256_file": {"executed_lines": [344, 345, 346, 347, 348], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [[346, 347], [346, 348]], "missing_branches": []}, "_utc_datetime": {"executed_lines": [352, 357, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [[357, 358], [357, 359]], "missing_branches": []}, "_utc_text": {"executed_lines": [363], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "_segment": {"executed_lines": [367, 368, 369, 374, 375], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [[367, 368], [367, 369], [369, 374], [369, 375]], "missing_branches": []}, "_partition_segment": {"executed_lines": [379, 380, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378, "executed_branches": [[379, 380], [379, 381], [381, 382], [381, 383]], "missing_branches": []}, "_is_reparse_point": {"executed_lines": [387, 389, 390, 391, 392, 393], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [388], "excluded_lines": [], "start_line": 386, "executed_branches": [[387, 389]], "missing_branches": [[387, 388]]}, "_resolved_lake_root": {"executed_lines": [397, 398, 399, 400, 401, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [[398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404]], "missing_branches": []}, "_validate_lake_path": {"executed_lines": [409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433], "summary": {"covered_lines": 21, "num_statements": 25, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 84.0, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [426, 427, 431, 432], "excluded_lines": [], "start_line": 407, "executed_branches": [[416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424]], "missing_branches": []}, "_mkdir_in_lake": {"executed_lines": [437, 442, 443, 444, 445, 446], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436, "executed_branches": [], "missing_branches": []}, "_atomic_write_bytes": {"executed_lines": [451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [[455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472]], "missing_branches": []}, "_lake_lock": {"executed_lines": [477, 478, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476, "executed_branches": [], "missing_branches": []}, "_stable_staging_directory": {"executed_lines": [494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [[498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510]], "missing_branches": []}, "_tree_size": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513, "executed_branches": [[514, 515], [514, 516]], "missing_branches": []}, "_disk_probe_path": {"executed_lines": [520, 521, 522, 523], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519, "executed_branches": [[521, 522], [521, 523]], "missing_branches": []}, "evaluate_capacity": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526, "executed_branches": [[536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563]], "missing_branches": []}, "require_collection_capacity": {"executed_lines": [583, 591, 592, 593], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[591, 592], [591, 593]], "missing_branches": []}, "_raw_manifest_identity": {"executed_lines": [597], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 596, "executed_branches": [], "missing_branches": []}, "_raw_key_dir": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 614, "executed_branches": [], "missing_branches": []}, "_raw_object_dir": {"executed_lines": [630], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629, "executed_branches": [], "missing_branches": []}, "_raw_tombstone_path": {"executed_lines": [642], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641, "executed_branches": [], "missing_branches": []}, "_raw_deleting_dir": {"executed_lines": [654], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 653, "executed_branches": [], "missing_branches": []}, "_raw_claim_path": {"executed_lines": [666], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665, "executed_branches": [], "missing_branches": []}, "_raw_lock_identity": {"executed_lines": [676], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675, "executed_branches": [], "missing_branches": []}, "_raw_key_claim": {"executed_lines": [683, 691], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "_load_raw_key_claim": {"executed_lines": [698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 697, "executed_branches": [[705, 706], [705, 707], [708, 709], [708, 712]], "missing_branches": []}, "_ensure_raw_key_claim": {"executed_lines": [716, 717, 718, 719, 720, 725], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 715, "executed_branches": [[717, 718], [717, 719]], "missing_branches": []}, "_raw_stage_prefix": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 728, "executed_branches": [], "missing_branches": []}, "_validate_raw_manifest": {"executed_lines": [734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733, "executed_branches": [[734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760]], "missing_branches": []}, "_load_raw_from_dir": {"executed_lines": [770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763, "executed_branches": [[778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792]], "missing_branches": []}, "_relocate_invalid_raw": {"executed_lines": [796, 797, 798, 799, 800, 801, 807, 808, 812], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795, "executed_branches": [], "missing_branches": []}, "_remove_staging_directory": {"executed_lines": [816, 817, 818, 819, 820], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [[818, 819], [818, 820]], "missing_branches": []}, "_recover_raw_staging": {"executed_lines": [828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 87.87878787878788, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [842, 849], "excluded_lines": [], "start_line": 823, "executed_branches": [[831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850]], "missing_branches": [[841, 842], [848, 849]]}, "write_raw_bytes": {"executed_lines": [869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [938, 946], "excluded_lines": [], "start_line": 858, "executed_branches": [[871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945]], "missing_branches": [[937, 938], [944, 946]]}, "_local_archive_path": {"executed_lines": [980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [989], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998]], "missing_branches": [[988, 989]]}, "_verify_archive_restore": {"executed_lines": [1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1001, "executed_branches": [], "missing_branches": []}, "_read_cleanup_audit": {"executed_lines": [1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [[1029, 1030], [1029, 1031]], "missing_branches": []}, "_load_archived_raw_reference": {"executed_lines": [1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [1038, 1039, 1042, 1049, 1051], "excluded_lines": [], "start_line": 1034, "executed_branches": [[1041, 1043], [1050, 1052]], "missing_branches": [[1041, 1042], [1050, 1051]]}, "_validate_cleanup_receipt": {"executed_lines": [1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1055, "executed_branches": [[1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081]], "missing_branches": []}, "_finalize_raw_deleting": {"executed_lines": [1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 8, "missing_branches": 4, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1093, 1098, 1100, 1109, 1110, 1112], "excluded_lines": [], "start_line": 1084, "executed_branches": [[1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113]], "missing_branches": [[1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112]]}, "validate_raw_reference": {"executed_lines": [1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1132], "excluded_lines": [], "start_line": 1117, "executed_branches": [[1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138]], "missing_branches": [[1131, 1132]]}, "load_raw_object": {"executed_lines": [1145, 1146, 1147, 1148, 1149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1141, "executed_branches": [], "missing_branches": []}, "cleanup_archived_raw_object": {"executed_lines": [1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235], "summary": {"covered_lines": 37, "num_statements": 43, "percent_covered": 82.53968253968254, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 86.04651162790698, "percent_statements_covered_display": "86", "num_branches": 20, "num_partial_branches": 5, "covered_branches": 15, "missing_branches": 5, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1175, 1176, 1179, 1181, 1190, 1203], "excluded_lines": [], "start_line": 1152, "executed_branches": [[1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217]], "missing_branches": [[1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218]]}, "_event_schema_id": {"executed_lines": [1239, 1240, 1241, 1242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1238, "executed_branches": [], "missing_branches": []}, "_stream_key": {"executed_lines": [1246, 1247, 1252, 1253], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1245, "executed_branches": [], "missing_branches": []}, "_arrow_ready": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [1261], "excluded_lines": [], "start_line": 1256, "executed_branches": [[1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265]], "missing_branches": [[1260, 1261]]}, "_validated_table": {"executed_lines": [1270, 1271, 1274, 1275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1269, "executed_branches": [], "missing_branches": []}, "_normalized_snapshot_payload": {"executed_lines": [1287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1278, "executed_branches": [], "missing_branches": []}, "_validate_quarantine_batch": {"executed_lines": [1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1299, "executed_branches": [[1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318]], "missing_branches": []}, "_event_claim_reference": {"executed_lines": [1322, 1323, 1324, 1327, 1335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1321, "executed_branches": [], "missing_branches": []}, "_event_claim_path": {"executed_lines": [1345], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1344, "executed_branches": [], "missing_branches": []}, "_event_claim_payload": {"executed_lines": [1355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1354, "executed_branches": [], "missing_branches": []}, "_validate_event_claim_reference": {"executed_lines": [1366, 1374, 1378, 1379, 1380], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1377], "excluded_lines": [], "start_line": 1362, "executed_branches": [[1374, 1378], [1378, 1379], [1378, 1380]], "missing_branches": [[1374, 1377]]}, "_validate_event_claim": {"executed_lines": [1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1383, "executed_branches": [[1392, 1395], [1392, 1396]], "missing_branches": []}, "_recover_missing_event_claim": {"executed_lines": [1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1403, "executed_branches": [[1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427]], "missing_branches": []}, "_publish_event_claims": {"executed_lines": [1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1436, "executed_branches": [[1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460]], "missing_branches": []}, "_write_quarantine": {"executed_lines": [1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522], "summary": {"covered_lines": 32, "num_statements": 35, "percent_covered": 86.04651162790698, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.42857142857143, "percent_statements_covered_display": "91", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [1496, 1497, 1498], "excluded_lines": [], "start_line": 1463, "executed_branches": [[1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499]], "missing_branches": [[1495, 1496], [1496, 1495], [1496, 1497]]}, "_write_normalized_events_legacy": {"executed_lines": [1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761], "summary": {"covered_lines": 86, "num_statements": 98, "percent_covered": 84.55882352941177, "percent_covered_display": "85", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88", "num_branches": 38, "num_partial_branches": 7, "covered_branches": 29, "missing_branches": 9, "percent_branches_covered": 76.3157894736842, "percent_branches_covered_display": "76"}, "missing_lines": [1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751], "excluded_lines": [], "start_line": 1525, "executed_branches": [[1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757]], "missing_branches": [[1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751]]}, "write_normalized_events": {"executed_lines": [1780, 1782], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1769, "executed_branches": [], "missing_branches": []}, "write_normalized_batches": {"executed_lines": [1804, 1806], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [], "missing_branches": []}, "_safe_snapshot_partition": {"executed_lines": [1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1825], "excluded_lines": [], "start_line": 1817, "executed_branches": [[1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826]], "missing_branches": [[1824, 1825]]}, "_load_normalized_snapshot": {"executed_lines": [1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936], "summary": {"covered_lines": 62, "num_statements": 64, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97", "num_branches": 38, "num_partial_branches": 2, "covered_branches": 36, "missing_branches": 2, "percent_branches_covered": 94.73684210526316, "percent_branches_covered_display": "95"}, "missing_lines": [1888, 1912], "excluded_lines": [], "start_line": 1829, "executed_branches": [[1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936]], "missing_branches": [[1887, 1888], [1911, 1912]]}, "load_normalized_snapshot": {"executed_lines": [1940], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1939, "executed_branches": [], "missing_branches": []}, "read_normalized_events": {"executed_lines": [1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1943, "executed_branches": [[1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": []}, "DuckDBSnapshot.__init__": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1966, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988]], "missing_branches": []}, "DuckDBSnapshot.query": {"executed_lines": [1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1990, "executed_branches": [[1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBSnapshot.close": {"executed_lines": [2011], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2010, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__enter__": {"executed_lines": [2014], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2013, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot.__exit__": {"executed_lines": [2017], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2016, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.__init__": {"executed_lines": [2024], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2023, "executed_branches": [], "missing_branches": []}, "DuckDBCatalog.open_snapshot": {"executed_lines": [2027, 2028], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 316, 339, 343, 351, 362, 366, 378, 386, 396, 407, 436, 449, 475, 476, 485, 486, 513, 519, 526, 574, 596, 614, 629, 641, 653, 665, 675, 682, 697, 715, 728, 733, 763, 795, 815, 823, 858, 979, 1001, 1022, 1034, 1055, 1084, 1117, 1141, 1152, 1238, 1245, 1256, 1269, 1278, 1299, 1321, 1344, 1354, 1362, 1383, 1403, 1436, 1463, 1525, 1769, 1793, 1817, 1829, 1939, 1943, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"CollectionStoppedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71, "executed_branches": [], "missing_branches": []}, "StoragePolicy": {"executed_lines": [83, 84, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76, "executed_branches": [[83, 84], [83, 85], [85, 86], [85, 87], [87, -82], [87, 88]], "missing_branches": []}, "CapacityDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "RawObjectManifest": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "RawObjectReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "RawKeyClaim": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145, "executed_branches": [], "missing_branches": []}, "ArchiveReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157, "executed_branches": [], "missing_branches": []}, "PartitionManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167, "executed_branches": [], "missing_branches": []}, "EventClaimReference": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181, "executed_branches": [], "missing_branches": []}, "EventClaimShardManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "EventClaimIndexManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197, "executed_branches": [], "missing_branches": []}, "L2CheckpointManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "EventClaimSequence": {"executed_lines": [222, 223, 224, 227, 230, 232, 237, 238, 239, 240, 241, 242, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 262, 263, 264, 265, 266, 269], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.22641509433963, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 20, "num_partial_branches": 1, "covered_branches": 19, "missing_branches": 1, "percent_branches_covered": 95.0, "percent_branches_covered_display": "95"}, "missing_lines": [259], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 253], [239, 240], [239, 246], [247, 248], [247, 252], [248, 249], [248, 250], [250, 247], [250, 251], [254, 255], [254, 256], [256, 257], [257, 256], [257, 258], [262, 263], [262, 264], [264, 265], [264, 266]], "missing_branches": [[256, 259]]}, "NormalizedSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "QuarantineEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292, "executed_branches": [], "missing_branches": []}, "NormalizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [], "missing_branches": []}, "DuckDBSnapshot": {"executed_lines": [1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2006, 2007, 2008, 2011, 2014, 2017], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1963, "executed_branches": [[1969, 1970], [1969, 1971], [1974, 1975], [1974, 1977], [1977, 1978], [1977, 1988], [1992, 1993], [1992, 1994], [1995, 2000], [1995, 2001], [2001, 2006], [2001, 2007]], "missing_branches": []}, "DuckDBCatalog": {"executed_lines": [2024, 2027, 2028], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2020, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 48, 49, 57, 68, 71, 75, 76, 77, 78, 79, 80, 82, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 134, 135, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 156, 157, 158, 159, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 213, 216, 226, 229, 234, 261, 268, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 301, 302, 303, 306, 307, 316, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 357, 358, 359, 362, 363, 366, 367, 368, 369, 374, 375, 378, 379, 380, 381, 382, 383, 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, 399, 400, 401, 402, 403, 404, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 433, 436, 437, 442, 443, 444, 445, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 475, 476, 477, 478, 479, 480, 481, 482, 485, 486, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 513, 514, 515, 516, 519, 520, 521, 522, 523, 526, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 551, 552, 553, 554, 555, 558, 559, 560, 561, 562, 563, 574, 583, 591, 592, 593, 596, 597, 614, 620, 629, 630, 641, 642, 653, 654, 665, 666, 675, 676, 682, 683, 691, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 712, 715, 716, 717, 718, 719, 720, 725, 728, 729, 730, 733, 734, 735, 736, 742, 743, 744, 745, 746, 747, 752, 757, 758, 759, 760, 763, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 795, 796, 797, 798, 799, 800, 801, 807, 808, 812, 815, 816, 817, 818, 819, 820, 823, 828, 829, 830, 831, 832, 833, 834, 835, 841, 843, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 855, 858, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 888, 889, 890, 910, 911, 918, 919, 920, 921, 925, 926, 927, 930, 931, 932, 933, 934, 935, 936, 937, 939, 940, 941, 942, 943, 944, 945, 948, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 971, 972, 973, 975, 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 992, 993, 994, 995, 996, 997, 998, 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1036, 1037, 1040, 1041, 1043, 1044, 1045, 1046, 1047, 1050, 1052, 1055, 1062, 1063, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1084, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1111, 1113, 1114, 1117, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1138, 1141, 1145, 1146, 1147, 1148, 1149, 1152, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1177, 1178, 1180, 1182, 1188, 1189, 1191, 1192, 1193, 1194, 1196, 1197, 1204, 1205, 1206, 1208, 1210, 1216, 1217, 1218, 1228, 1229, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1245, 1246, 1247, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1264, 1265, 1266, 1269, 1270, 1271, 1274, 1275, 1278, 1287, 1299, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1327, 1335, 1344, 1345, 1354, 1355, 1362, 1366, 1374, 1378, 1379, 1380, 1383, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1396, 1397, 1398, 1399, 1400, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1432, 1433, 1436, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1459, 1460, 1463, 1471, 1472, 1473, 1477, 1478, 1479, 1480, 1490, 1491, 1492, 1493, 1494, 1495, 1499, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1525, 1536, 1537, 1538, 1539, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1568, 1569, 1570, 1572, 1573, 1574, 1583, 1584, 1585, 1586, 1588, 1589, 1594, 1595, 1607, 1608, 1609, 1616, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1638, 1639, 1640, 1641, 1642, 1658, 1664, 1665, 1673, 1674, 1675, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1691, 1705, 1706, 1709, 1711, 1715, 1723, 1724, 1725, 1738, 1742, 1743, 1744, 1745, 1746, 1747, 1757, 1758, 1759, 1760, 1761, 1769, 1780, 1782, 1793, 1804, 1806, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826, 1829, 1835, 1836, 1837, 1842, 1847, 1848, 1849, 1850, 1851, 1853, 1858, 1861, 1862, 1863, 1864, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1886, 1887, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1907, 1908, 1909, 1910, 1911, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1930, 1931, 1934, 1935, 1936, 1939, 1940, 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1963, 1966, 1990, 2010, 2013, 2016, 2020, 2023, 2026], "summary": {"covered_lines": 992, "num_statements": 1040, "percent_covered": 93.95924308588064, "percent_covered_display": "94", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 95.38461538461539, "percent_statements_covered_display": "95", "num_branches": 334, "num_partial_branches": 31, "covered_branches": 299, "missing_branches": 35, "percent_branches_covered": 89.52095808383234, "percent_branches_covered_display": "90"}, "missing_lines": [388, 426, 427, 431, 432, 842, 849, 938, 946, 989, 1038, 1039, 1042, 1049, 1051, 1093, 1098, 1100, 1109, 1110, 1112, 1132, 1175, 1176, 1179, 1181, 1190, 1203, 1261, 1377, 1496, 1497, 1498, 1571, 1587, 1600, 1601, 1602, 1617, 1676, 1710, 1748, 1749, 1750, 1751, 1825, 1888, 1912], "excluded_lines": [], "start_line": 1, "executed_branches": [[318, 319], [318, 320], [320, 321], [320, 322], [322, 323], [322, 324], [324, 325], [324, 326], [326, 327], [326, 328], [328, 329], [328, 330], [330, 331], [330, 332], [346, 347], [346, 348], [357, 358], [357, 359], [367, 368], [367, 369], [369, 374], [369, 375], [379, 380], [379, 381], [381, 382], [381, 383], [387, 389], [398, 399], [398, 400], [400, 401], [400, 402], [402, 403], [402, 404], [416, 417], [416, 428], [418, 419], [418, 422], [419, 420], [419, 421], [422, 423], [422, 424], [455, 456], [455, 460], [457, 458], [457, 459], [467, 468], [467, 469], [471, -449], [471, 472], [498, 499], [498, 503], [500, 501], [500, 502], [509, -485], [509, 510], [514, 515], [514, 516], [521, 522], [521, 523], [536, 537], [536, 538], [539, 540], [539, 541], [541, 542], [541, 545], [545, 546], [545, 547], [554, 555], [554, 558], [558, 559], [558, 560], [561, 562], [561, 563], [591, 592], [591, 593], [705, 706], [705, 707], [708, 709], [708, 712], [717, 718], [717, 719], [734, 735], [734, 736], [736, 742], [736, 743], [743, 744], [743, 745], [745, 746], [745, 747], [752, 757], [752, 758], [759, -733], [759, 760], [778, 779], [778, 782], [780, 781], [780, 782], [782, 783], [782, 784], [785, 786], [785, 787], [787, 788], [787, 789], [790, 791], [790, 792], [818, 819], [818, 820], [831, 832], [831, 855], [832, 833], [832, 834], [841, 846], [846, 847], [846, 853], [848, 850], [871, 872], [871, 873], [926, 927], [926, 930], [930, 931], [930, 932], [934, 935], [934, 936], [936, 937], [936, 948], [937, 939], [944, 945], [980, 981], [980, 982], [983, 984], [983, 985], [985, 986], [985, 992], [988, 990], [993, 994], [993, 995], [996, 997], [996, 998], [1029, 1030], [1029, 1031], [1041, 1043], [1050, 1052], [1062, 1063], [1062, 1066], [1068, 1069], [1068, 1070], [1070, 1071], [1070, 1072], [1074, 1080], [1074, 1081], [1092, 1094], [1095, 1096], [1095, 1102], [1097, 1099], [1099, 1101], [1103, 1104], [1103, 1114], [1111, 1113], [1126, 1127], [1126, 1128], [1128, 1129], [1128, 1130], [1131, 1138], [1161, 1162], [1161, 1163], [1171, 1172], [1171, 1196], [1178, 1180], [1180, 1182], [1188, 1189], [1188, 1192], [1189, 1191], [1192, 1193], [1196, 1197], [1196, 1204], [1204, 1205], [1204, 1208], [1216, 1217], [1258, 1259], [1258, 1266], [1260, 1262], [1262, 1263], [1262, 1264], [1264, 1258], [1264, 1265], [1307, 1308], [1307, 1309], [1313, 1314], [1313, 1315], [1316, 1317], [1316, 1318], [1374, 1378], [1378, 1379], [1378, 1380], [1392, 1395], [1392, 1396], [1409, 1410], [1409, 1411], [1412, 1413], [1412, 1425], [1413, 1414], [1413, 1415], [1420, 1412], [1420, 1421], [1421, 1422], [1421, 1423], [1425, 1426], [1425, 1427], [1442, 1443], [1442, 1444], [1445, 1446], [1445, 1451], [1447, 1448], [1447, 1449], [1449, 1445], [1449, 1450], [1451, 1452], [1451, 1459], [1459, -1436], [1459, 1460], [1471, 1472], [1471, 1473], [1492, 1493], [1492, 1494], [1495, 1499], [1550, 1551], [1550, 1552], [1552, 1553], [1552, 1554], [1554, 1555], [1554, 1559], [1555, 1556], [1555, 1557], [1561, 1562], [1561, 1565], [1563, 1564], [1569, 1570], [1569, 1573], [1570, 1572], [1584, 1585], [1584, 1608], [1586, 1588], [1594, 1595], [1594, 1607], [1616, 1624], [1625, 1626], [1625, 1632], [1664, 1665], [1664, 1705], [1674, 1675], [1674, 1678], [1675, 1677], [1709, 1711], [1747, 1757], [1819, 1820], [1819, 1821], [1822, 1823], [1822, 1824], [1824, 1826], [1847, 1848], [1847, 1849], [1850, 1851], [1850, 1858], [1864, 1869], [1864, 1870], [1871, 1872], [1871, 1875], [1872, 1873], [1872, 1874], [1875, 1876], [1875, 1878], [1876, 1877], [1876, 1878], [1887, 1889], [1893, 1894], [1893, 1924], [1894, 1895], [1894, 1896], [1897, 1898], [1897, 1899], [1899, 1900], [1899, 1901], [1907, 1908], [1907, 1909], [1911, 1913], [1915, 1916], [1915, 1917], [1918, 1919], [1918, 1920], [1924, 1925], [1924, 1926], [1926, 1930], [1926, 1931], [1934, 1935], [1934, 1936], [1955, 1956], [1955, 1960], [1956, 1957], [1956, 1958]], "missing_branches": [[387, 388], [841, 842], [848, 849], [937, 938], [944, 946], [988, 989], [1041, 1042], [1050, 1051], [1092, 1093], [1097, 1098], [1099, 1100], [1111, 1112], [1131, 1132], [1178, 1179], [1180, 1181], [1189, 1190], [1192, 1194], [1216, 1218], [1260, 1261], [1374, 1377], [1495, 1496], [1496, 1495], [1496, 1497], [1563, 1561], [1570, 1571], [1586, 1587], [1616, 1617], [1675, 1676], [1709, 1710], [1747, 1748], [1749, 1750], [1749, 1751], [1824, 1825], [1887, 1888], [1911, 1912]]}}}, "src\\quant_data_kit\\domain_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 160, "num_statements": 160, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 38, "num_partial_branches": 0, "covered_branches": 38, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134], [161, 162], [161, 167], [173, 174], [173, 175], [195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": [], "functions": {"_required_text": {"executed_lines": [49, 50, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [[49, 50], [49, 51]], "missing_branches": []}, "_optional_text": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "_validate_knowledge_interval": {"executed_lines": [62, 63, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [[68, 69], [68, 70]], "missing_branches": []}, "InstrumentSpec.__post_init__": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping.__post_init__": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession.__post_init__": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "dataclass_payload": {"executed_lines": [218, 219, 242, 243, 252, 253, 264], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [[218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}, "fixed_point_payload": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_time": {"executed_lines": [272], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_optional_time": {"executed_lines": [276], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 54, 58, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 267, 271, 275], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AssetClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "MarginMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "SessionPhase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "InstrumentSpec": {"executed_lines": [98, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 127, 128, 129, 130, 133, 134, 137, 140, 143, 144, 145, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [[98, 106], [98, 111], [111, 112], [111, 113], [113, 114], [113, 115], [115, 116], [115, 117], [117, 118], [117, 121], [119, 117], [119, 120], [127, 128], [127, 129], [130, 133], [130, 134]], "missing_branches": []}, "SymbolMapping": {"executed_lines": [161, 162, 167, 168, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151, "executed_branches": [[161, 162], [161, 167], [173, 174], [173, 175]], "missing_branches": []}, "TradingSession": {"executed_lines": [195, 196, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[195, 196], [195, 201], [201, 202], [201, 203], [203, 204], [203, 205], [207, 208], [207, 209]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 55, 58, 62, 63, 68, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 216, 218, 219, 242, 243, 252, 253, 264, 267, 268, 271, 272, 275, 276], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[49, 50], [49, 51], [68, 69], [68, 70], [218, 219], [218, 242], [242, 243], [242, 252], [252, 253], [252, 264]], "missing_branches": []}}}, "src\\quant_data_kit\\exceptions.py": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"QuantDataKitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4, "executed_branches": [], "missing_branches": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "ProviderError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [4, 8, 12], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\fixed_point.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 23, 25, 27, 29, 32, 33, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 56, 57], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]], "functions": {"FixedPoint.__post_init__": {"executed_lines": [23, 25, 27, 29], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 8, "num_partial_branches": 4, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [24, 26, 28, 30], "excluded_lines": [], "start_line": 22, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30]]}, "FixedPoint.from_decimal": {"executed_lines": [41, 42, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [43], "excluded_lines": [], "start_line": 33, "executed_branches": [[42, 44], [46, 47], [46, 48]], "missing_branches": [[42, 43]]}, "FixedPoint.to_decimal": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_positive": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "FixedPoint.is_non_negative": {"executed_lines": [57], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FixedPoint": {"executed_lines": [23, 25, 27, 29, 41, 42, 44, 45, 46, 47, 48, 51, 54, 57], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [24, 26, 28, 30, 43], "excluded_lines": [], "start_line": 16, "executed_branches": [[23, 25], [25, 27], [27, 29], [29, -22], [42, 44], [46, 47], [46, 48]], "missing_branches": [[23, 24], [25, 26], [27, 28], [29, 30], [42, 43]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 15, 16, 19, 20, 22, 32, 33, 50, 53, 56], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\l2_replay.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 107, 108, 109, 110, 112, 113, 114, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 213, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 280, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 408, 409, 414, 415, 416, 420, 421, 422, 423, 424, 425, 426, 427, 428, 430, 431, 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, 454, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 283, "num_statements": 289, "percent_covered": 97.72151898734177, "percent_covered_display": "98", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 97.92387543252595, "percent_statements_covered_display": "98", "num_branches": 106, "num_partial_branches": 1, "covered_branches": 103, "missing_branches": 3, "percent_branches_covered": 97.16981132075472, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443], [478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": [[205, 208], [272, 273], [272, 275]], "functions": {"_canonical": {"executed_lines": [53], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52, "executed_branches": [], "missing_branches": []}, "_level": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.initialized": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.sequence": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply": {"executed_lines": [96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101]], "missing_branches": []}, "L2BookReconstructor.apply_snapshot": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_snapshot_state": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor.apply_delta": {"executed_lines": [113, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_delta_state": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor._apply_without_checkpoint": {"executed_lines": [122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [[123, 124], [123, 126], [126, 127], [126, 129]], "missing_branches": []}, "L2BookReconstructor._apply_validated_without_checkpoint": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131, "executed_branches": [[134, 135], [134, 137], [137, 138], [137, 140]], "missing_branches": []}, "L2BookReconstructor._apply_validated_snapshot_state": {"executed_lines": [143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142, "executed_branches": [[144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160]], "missing_branches": []}, "L2BookReconstructor._apply_validated_delta_state": {"executed_lines": [171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [208], "excluded_lines": [], "start_line": 170, "executed_branches": [[171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206]], "missing_branches": [[205, 208]]}, "L2BookReconstructor._apply_validated_uniform_upsert_batch": {"executed_lines": [237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278], "summary": {"covered_lines": 22, "num_statements": 27, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 81.48148148148148, "percent_statements_covered_display": "81", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 213, "executed_branches": [[237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259]], "missing_branches": [[272, 273], [272, 275]]}, "L2BookReconstructor._apply_validated_atomic_delta_group": {"executed_lines": [304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 34, "num_partial_branches": 0, "covered_branches": 34, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280, "executed_branches": [[304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390]], "missing_branches": []}, "L2BookReconstructor._assert_identity": {"executed_lines": [409, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408, "executed_branches": [[415, -408], [415, 416]], "missing_branches": []}, "L2BookReconstructor._assert_time_advances": {"executed_lines": [421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420, "executed_branches": [[421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428]], "missing_branches": []}, "L2BookReconstructor._assert_book_valid": {"executed_lines": [435, 436, 437, 438], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431, "executed_branches": [[435, 436], [435, 437], [437, -430], [437, 438]], "missing_branches": []}, "L2BookReconstructor.checkpoint": {"executed_lines": [441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440, "executed_branches": [[441, 442], [441, 443]], "missing_branches": []}, "_parsed_timestamp": {"executed_lines": [468], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [], "missing_branches": []}, "replay_l2": {"executed_lines": [477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 62, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 471], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"L2ReplayError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "ReconstructedLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "BookCheckpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "L2ReplayResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "L2BookReconstructor": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 89, 93, 96, 97, 98, 99, 100, 101, 104, 105, 108, 109, 110, 113, 114, 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 181, 182, 189, 190, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 209, 210, 211, 237, 238, 239, 240, 241, 242, 245, 246, 251, 252, 253, 254, 255, 256, 259, 266, 267, 268, 269, 270, 277, 278, 304, 305, 306, 307, 308, 309, 312, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 352, 353, 354, 355, 356, 357, 358, 359, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 390, 392, 399, 400, 402, 403, 404, 405, 406, 409, 414, 415, 416, 421, 422, 423, 424, 425, 426, 427, 428, 435, 436, 437, 438, 441, 442, 443, 444, 445, 454], "summary": {"covered_lines": 192, "num_statements": 198, "percent_covered": 96.89655172413794, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97", "num_branches": 92, "num_partial_branches": 1, "covered_branches": 89, "missing_branches": 3, "percent_branches_covered": 96.73913043478261, "percent_branches_covered_display": "97"}, "missing_lines": [208, 271, 272, 273, 275, 276], "excluded_lines": [], "start_line": 74, "executed_branches": [[97, 98], [97, 99], [99, 100], [99, 101], [123, 124], [123, 126], [126, 127], [126, 129], [134, 135], [134, 137], [137, 138], [137, 140], [144, 145], [144, 150], [146, 147], [146, 150], [155, 156], [155, 157], [158, 159], [158, 160], [171, 172], [171, 173], [176, 177], [176, 181], [189, 190], [189, 194], [196, 197], [196, 201], [197, 198], [197, 199], [205, 206], [237, 238], [237, 239], [241, 242], [241, 245], [245, 246], [245, 251], [251, 252], [251, 253], [255, 256], [255, 259], [304, 305], [304, 306], [308, 309], [308, 312], [322, 323], [322, 324], [324, 325], [324, 326], [332, 352], [332, 402], [358, 359], [358, 364], [364, 365], [364, 366], [366, 367], [366, 368], [368, 369], [368, 370], [370, 371], [370, 372], [372, 373], [372, 377], [377, 378], [377, 379], [379, 380], [379, 381], [381, 382], [381, 383], [383, 384], [383, 386], [387, 388], [387, 392], [388, 389], [388, 390], [415, -408], [415, 416], [421, 422], [421, 423], [423, 424], [423, 425], [427, -420], [427, 428], [435, 436], [435, 437], [437, -430], [437, 438], [441, 442], [441, 443]], "missing_branches": [[205, 208], [272, 273], [272, 275]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 21, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 52, 53, 62, 63, 64, 65, 74, 77, 87, 88, 91, 92, 95, 103, 107, 112, 116, 121, 131, 142, 170, 213, 280, 408, 420, 430, 431, 440, 466, 467, 468, 471, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 496, 497, 498, 499, 500, 504, 505, 506, 507, 510], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[478, 479], [478, 480], [480, 481], [480, 482], [486, 487], [486, 505], [488, 489], [488, 490], [496, 486], [496, 497], [499, 500], [499, 504], [506, 507], [506, 510]], "missing_branches": []}}}, "src\\quant_data_kit\\market_clock_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 16, 18, 19, 21, 22, 23, 26, 27, 29, 30, 31, 40, 41, 42, 44, 53], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]], "functions": {"MarketClock.__init__": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [17, 20], "excluded_lines": [], "start_line": 15, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21]]}, "MarketClock.session_at": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29, "executed_branches": [], "missing_branches": []}, "MarketClock.trading_day_at": {"executed_lines": [41, 42], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "MarketClock.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [50, 51], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "MarketClock.next_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": [[60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"MarketClock": {"executed_lines": [16, 18, 19, 21, 22, 23, 26, 27, 30, 31, 41, 42], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 51.515151515151516, "percent_covered_display": "52", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 7, "percent_branches_covered": 41.666666666666664, "percent_branches_covered_display": "42"}, "missing_lines": [17, 20, 50, 51, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 14, "executed_branches": [[16, 18], [19, 21], [21, 22], [21, 26], [22, 23]], "missing_branches": [[16, 17], [19, 20], [22, 21], [60, 61], [60, 63], [61, 60], [61, 62]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 14, 15, 29, 40, 44, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\market_events_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 97, 98, 103, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 266, 267, 268, 269, 271, 272, 273, 276, 277, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 264, "num_statements": 265, "percent_covered": 99.45205479452055, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.62264150943396, "percent_statements_covered_display": "99", "num_branches": 100, "num_partial_branches": 1, "covered_branches": 99, "missing_branches": 1, "percent_branches_covered": 99.0, "percent_branches_covered_display": "99"}, "missing_lines": [160], "excluded_lines": [], "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84], [98, -95], [98, 103], [120, 121], [120, 122], [122, -114], [122, 123], [137, -133], [137, 138], [157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186], [198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214], [228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241], [253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261], [288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298], [310, -307], [310, 311], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": [[159, 160]], "functions": {"_required_text": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [[34, 35], [34, 36]], "missing_branches": []}, "_positive": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[40, -39], [40, 41]], "missing_branches": []}, "_non_negative": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, -44], [45, 46]], "missing_branches": []}, "_MarketEventBase.__post_init__": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel.__post_init__": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent.__post_init__": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent.__post_init__": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent.__post_init__": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 153, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent.__post_init__": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent.__post_init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent.__post_init__": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent.__post_init__": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent.__post_init__": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent.__post_init__": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "_time": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [], "missing_branches": []}, "_base_payload": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331, "executed_branches": [], "missing_branches": []}, "_level_payload": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346, "executed_branches": [], "missing_branches": []}, "market_event_payload": {"executed_lines": [355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 0, "covered_branches": 18, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354, "executed_branches": [[356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 39, 44, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 331, 346, 354], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"AggressorSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "BookSide": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "BookAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28, "executed_branches": [], "missing_branches": []}, "_MarketEventBase": {"executed_lines": [63, 64, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 83, 84, 85, 86], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [[63, 64], [63, 69], [72, 73], [72, 74], [74, 75], [74, 76], [76, 77], [76, 78], [78, 83], [78, 84]], "missing_branches": []}, "BookLevel": {"executed_lines": [96, 97, 98, 103], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [[98, -95], [98, 103]], "missing_branches": []}, "QuoteEvent": {"executed_lines": [115, 116, 117, 118, 119, 120, 121, 122, 123], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[120, 121], [120, 122], [122, -114], [122, 123]], "missing_branches": []}, "TradeEvent": {"executed_lines": [134, 135, 136, 137, 138], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[137, -133], [137, 138]], "missing_branches": []}, "BarEvent": {"executed_lines": [154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 175, 176, 179, 180, 183, 184, 185, 186, 187], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95", "num_branches": 14, "num_partial_branches": 1, "covered_branches": 13, "missing_branches": 1, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [160], "excluded_lines": [], "start_line": 142, "executed_branches": [[157, 158], [157, 159], [159, 161], [161, 162], [161, 163], [164, 175], [164, 176], [176, 179], [176, 180], [180, 183], [180, 184], [184, 185], [184, 186]], "missing_branches": [[159, 160]]}, "BookSnapshotEvent": {"executed_lines": [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191, "executed_branches": [[198, 199], [198, 200], [200, 201], [200, 202], [203, 204], [203, 205], [207, 208], [207, 209], [209, 210], [209, 211], [211, 212], [211, 213], [213, -196], [213, 214]], "missing_branches": []}, "BookDeltaEvent": {"executed_lines": [227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218, "executed_branches": [[228, 229], [228, 230], [230, 231], [230, 232], [232, 233], [232, 234], [234, 235], [234, 236], [238, 239], [238, 240], [240, -226], [240, 241]], "missing_branches": []}, "FundingRateEvent": {"executed_lines": [252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [[253, 254], [253, 255], [255, 256], [255, 257], [259, 260], [259, 261]], "missing_branches": []}, "MarkPriceEvent": {"executed_lines": [272, 273], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "CorporateActionEvent": {"executed_lines": [286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277, "executed_branches": [[288, 289], [288, 290], [290, 291], [290, 292], [292, 293], [292, 294], [294, 295], [294, 297], [297, -285], [297, 298]], "missing_branches": []}, "StatusEvent": {"executed_lines": [308, 309, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302, "executed_branches": [[310, -307], [310, 311]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 89, 90, 91, 92, 93, 95, 106, 107, 108, 109, 110, 111, 112, 114, 126, 127, 128, 129, 130, 131, 133, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 190, 191, 192, 193, 194, 196, 217, 218, 219, 220, 221, 222, 223, 224, 226, 244, 245, 246, 247, 248, 249, 251, 266, 267, 268, 269, 271, 276, 277, 278, 279, 280, 281, 282, 283, 285, 301, 302, 303, 304, 305, 307, 314, 327, 328, 331, 332, 346, 347, 354, 355, 356, 357, 363, 364, 369, 370, 380, 381, 385, 386, 393, 394, 399, 400, 401, 402, 409, 410, 412, 413], "summary": {"covered_lines": 147, "num_statements": 147, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[34, 35], [34, 36], [40, -39], [40, 41], [45, -44], [45, 46], [356, 357], [356, 363], [363, 364], [363, 369], [369, 370], [369, 380], [380, 381], [380, 385], [385, 386], [385, 393], [393, 394], [393, 399], [399, 400], [399, 401], [401, 402], [401, 409], [409, 410], [409, 412]], "missing_branches": []}}}, "src\\quant_data_kit\\normalized_v3.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 236, 237, 238, 239, 240, 242, 243, 245, 246, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 327, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 385, 386, 387, 388, 389, 390, 391, 393, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 423, 424, 425, 426, 429, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 468, 469, 470, 471, 473, 474, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 622, 623, 624, 625, 627, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 643, 644, 645, 646, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1415, "num_statements": 1454, "percent_covered": 95.55444555444555, "percent_covered_display": "96", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 97.31774415405778, "percent_statements_covered_display": "97", "num_branches": 548, "num_partial_branches": 46, "covered_branches": 498, "missing_branches": 50, "percent_branches_covered": 90.87591240875912, "percent_branches_covered_display": "91"}, "missing_lines": [363, 419, 427, 709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [211, -208], [211, 212], [215, 216], [215, 217], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381], [401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377], [418, 419], [426, 427], [506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]], "functions": {"_native_validator": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "_validate_l2_semantics": {"executed_lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 30, "num_partial_branches": 0, "covered_branches": 30, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149]], "missing_branches": []}, "_validate_event_record": {"executed_lines": [153, 154, 155, 156, 157, 158, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152, "executed_branches": [[157, 158], [157, 160]], "missing_branches": []}, "_cached_timestamp": {"executed_lines": [165], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164, "executed_branches": [], "missing_branches": []}, "_cached_date": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "_cached_utc_text": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_cached_date_text": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_arrow_ready_rows": {"executed_lines": [184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196]], "missing_branches": []}, "_InputSpool.__init__": {"executed_lines": [203, 204, 205, 206], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "_InputSpool.append": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [[211, -208], [211, 212]], "missing_branches": []}, "_InputSpool.flush": {"executed_lines": [215, 216, 217, 218, 226, 227, 231, 232, 233, 234], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214, "executed_branches": [[215, 216], [215, 217]], "missing_branches": []}, "_InputSpool.close": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "_InputSpool.__enter__": {"executed_lines": [243], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "_InputSpool.__exit__": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245, "executed_branches": [], "missing_branches": []}, "_iter_spooled_records": {"executed_lines": [250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249, "executed_branches": [[251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260]], "missing_branches": []}, "_has_non_finite": {"executed_lines": [264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [[264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270]], "missing_branches": []}, "_OpenPartition.append": {"executed_lines": [289, 294, 295, 296, 297], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288, "executed_branches": [[294, 295], [294, 296]], "missing_branches": []}, "_OpenPartition.flush": {"executed_lines": [300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301], [300, 302], [306, 307], [313, 314]], "missing_branches": [[306, 312], [313, 321]]}, "_OpenPartition.append_record_batch": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327, "executed_branches": [[334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354]], "missing_branches": []}, "_OpenPartition._flush_arrow_buffer": {"executed_lines": [357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [363], "excluded_lines": [], "start_line": 356, "executed_branches": [[357, 358], [357, 359], [362, 364], [364, 365], [364, 372]], "missing_branches": [[362, 363]]}, "_OpenPartition.close": {"executed_lines": [378, 379, 380, 381, 382], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[380, 381]], "missing_branches": [[380, -377]]}, "_PartitionSet.__init__": {"executed_lines": [387, 388, 389, 390, 391], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386, "executed_branches": [], "missing_branches": []}, "_PartitionSet.append": {"executed_lines": [394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [419], "excluded_lines": [], "start_line": 393, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421]], "missing_branches": [[418, 419]]}, "_PartitionSet.flush_all": {"executed_lines": [424, 425, 426], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [427], "excluded_lines": [], "start_line": 423, "executed_branches": [[424, 425], [424, 426], [426, -423]], "missing_branches": [[426, 427]]}, "_PartitionSet.append_record_batch": {"executed_lines": [440, 445, 446, 447, 448, 452, 459, 460, 461, 462], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429, "executed_branches": [[447, 448], [447, 460], [460, 461], [460, 462]], "missing_branches": []}, "_PartitionSet.close": {"executed_lines": [469, 470, 471], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [[470, -468], [470, 471]], "missing_branches": []}, "_PartitionSet.paths": {"executed_lines": [474], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473, "executed_branches": [], "missing_branches": []}, "_partition_identity": {"executed_lines": [487], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482, "executed_branches": [], "missing_branches": []}, "_streaming_stage": {"executed_lines": [497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [], "excluded_lines": [], "start_line": 496, "executed_branches": [[499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521]], "missing_branches": [[506, 499], [518, 520], [520, -495]]}, "_sql_text": {"executed_lines": [525], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524, "executed_branches": [], "missing_branches": []}, "_sql_path_list": {"executed_lines": [529], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "_sql_identifier": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "_canonical_sql_value": {"executed_lines": [537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536, "executed_branches": [[537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563]], "missing_branches": []}, "_canonical_row_sql": {"executed_lines": [567, 568, 569, 575], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566, "executed_branches": [[568, 569], [568, 575]], "missing_branches": []}, "_canonical_event_sql": {"executed_lines": [579], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578, "executed_branches": [], "missing_branches": []}, "_sort_partition": {"executed_lines": [589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 588, "executed_branches": [[589, 590], [589, 591], [609, 610], [609, 614], [614, 615]], "missing_branches": [[614, 616]]}, "_JsonArrayDigest.__init__": {"executed_lines": [622, 623, 624, 625], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "_JsonArrayDigest.update": {"executed_lines": [628, 629, 630, 635, 636, 637, 638, 639, 640, 641], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 627, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_JsonArrayDigest.hexdigest": {"executed_lines": [644, 645, 646], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 643, "executed_branches": [], "missing_branches": []}, "_logical_rows": {"executed_lines": [650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 649, "executed_branches": [[653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662]], "missing_branches": [[657, 655], [661, 659]]}, "_contains_floating_type": {"executed_lines": [668, 669, 670, 671, 672, 673, 674], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 667, "executed_branches": [[668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674]], "missing_branches": []}, "_scan_partition": {"executed_lines": [681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729], "summary": {"covered_lines": 37, "num_statements": 39, "percent_covered": 92.15686274509804, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.87179487179488, "percent_statements_covered_display": "95", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [709, 717], "excluded_lines": [], "start_line": 677, "executed_branches": [[684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727]], "missing_branches": [[708, 709], [716, 717]]}, "_scan_partition_arrow_ipc": {"executed_lines": [733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 732, "executed_branches": [[742, 743], [742, 747], [747, 748], [747, 753]], "missing_branches": []}, "_partition_manifests": {"executed_lines": [765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 12, "num_partial_branches": 2, "covered_branches": 10, "missing_branches": 2, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [782, 790], "excluded_lines": [], "start_line": 758, "executed_branches": [[766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791]], "missing_branches": [[781, 782], [789, 790]]}, "_duplicate_event_ids": {"executed_lines": [810, 811, 812, 813, 814, 820, 822], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 809, "executed_branches": [[810, 811], [810, 812]], "missing_branches": []}, "_publish_quarantine_file": {"executed_lines": [834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [852, 873], "excluded_lines": [], "start_line": 825, "executed_branches": [[834, 835], [834, 836], [851, 853]], "missing_branches": [[851, 852]]}, "_rebuild_after_exclusions": {"executed_lines": [886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 94.87179487179488, "percent_covered_display": "95", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905]], "missing_branches": [[886, 888], [904, 906]]}, "_claim_database": {"executed_lines": [927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997], "summary": {"covered_lines": 25, "num_statements": 29, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.20689655172414, "percent_statements_covered_display": "86", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 3, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [991, 992, 993, 994], "excluded_lines": [], "start_line": 922, "executed_branches": [[940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997]], "missing_branches": [[990, 991], [992, 993], [992, 994]]}, "_claim_shard_manifests": {"executed_lines": [1003, 1004], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1000, "executed_branches": [], "missing_branches": []}, "_claim_multiset_manifest_sql": {"executed_lines": [1015, 1018, 1022, 1023, 1031], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1014, "executed_branches": [[1022, 1023], [1022, 1031]], "missing_branches": []}, "_export_claim_index": {"executed_lines": [1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [1053, 1066], "excluded_lines": [], "start_line": 1044, "executed_branches": [[1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067]], "missing_branches": [[1052, 1053], [1065, 1066]]}, "_claim_select_sql": {"executed_lines": [1092, 1093, 1094], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_claim_file_order": {"executed_lines": [1114, 1115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1113, "executed_branches": [], "missing_branches": []}, "_claim_shard_manifests_from_paths": {"executed_lines": [1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1128], "excluded_lines": [], "start_line": 1118, "executed_branches": [[1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130]], "missing_branches": [[1127, 1128]]}, "_write_claim_index_manifest": {"executed_lines": [1158, 1165, 1176, 1177], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1151, "executed_branches": [], "missing_branches": []}, "_build_claim_index_files": {"executed_lines": [1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1197, 1218, 1242], "excluded_lines": [], "start_line": 1183, "executed_branches": [[1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256]], "missing_branches": [[1196, 1197], [1217, 1218], [1241, 1242]]}, "_claim_index_root": {"executed_lines": [1260], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1259, "executed_branches": [], "missing_branches": []}, "_claim_index_files": {"executed_lines": [1264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "_validate_claim_index": {"executed_lines": [1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 94.52054794520548, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96", "num_branches": 26, "num_partial_branches": 2, "covered_branches": 24, "missing_branches": 2, "percent_branches_covered": 92.3076923076923, "percent_branches_covered_display": "92"}, "missing_lines": [1275, 1327], "excluded_lines": [], "start_line": 1267, "executed_branches": [[1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332]], "missing_branches": [[1274, 1275], [1326, 1327]]}, "_publish_or_validate_claim_index": {"executed_lines": [1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1335, "executed_branches": [[1345, 1346], [1345, 1367]], "missing_branches": []}, "_snapshot_payload_v3": {"executed_lines": [1389], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1378, "executed_branches": [], "missing_branches": []}, "_index_for_snapshot": {"executed_lines": [1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [1431], "excluded_lines": [], "start_line": 1404, "executed_branches": [[1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462]], "missing_branches": [[1430, 1431]]}, "iter_event_claims_v3": {"executed_lines": [1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1466, "executed_branches": [[1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498]], "missing_branches": []}, "_historical_index_paths": {"executed_lines": [1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 12, "num_partial_branches": 3, "covered_branches": 9, "missing_branches": 3, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [1512, 1560], "excluded_lines": [], "start_line": 1503, "executed_branches": [[1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562]], "missing_branches": [[1511, 1512], [1559, 1560], [1561, 1563]]}, "_assert_lake_wide_claims": {"executed_lines": [1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1575, "executed_branches": [[1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599]], "missing_branches": []}, "load_normalized_snapshot_v3": {"executed_lines": [1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755], "summary": {"covered_lines": 76, "num_statements": 78, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97", "num_branches": 42, "num_partial_branches": 2, "covered_branches": 40, "missing_branches": 2, "percent_branches_covered": 95.23809523809524, "percent_branches_covered_display": "95"}, "missing_lines": [1622, 1706], "excluded_lines": [], "start_line": 1602, "executed_branches": [[1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746]], "missing_branches": [[1621, 1622], [1705, 1706]]}, "_all_duplicate_ids_from_spool": {"executed_lines": [1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1779, "executed_branches": [[1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789]], "missing_branches": []}, "_validate_stream_record": {"executed_lines": [1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1793, "executed_branches": [[1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837]], "missing_branches": []}, "_revalidate_streams_after_duplicate_exclusions": {"executed_lines": [1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1841, "executed_branches": [[1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882]], "missing_branches": []}, "_all_true": {"executed_lines": [1899, 1900], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1898, "executed_branches": [], "missing_branches": []}, "_require_all": {"executed_lines": [1904, 1905], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1903, "executed_branches": [[1904, -1903], [1904, 1905]], "missing_branches": []}, "_uniform_value": {"executed_lines": [1909, 1910, 1911, 1912, 1913, 1914], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1908, "executed_branches": [[1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914]], "missing_branches": []}, "_validate_fixed_point_array": {"executed_lines": [1918, 1919, 1920, 1921, 1922, 1925], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1917, "executed_branches": [[1920, 1921], [1920, 1922]], "missing_branches": []}, "_validate_common_arrow_batch": {"executed_lines": [1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999], "summary": {"covered_lines": 36, "num_statements": 39, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [1938, 1939, 1998], "excluded_lines": [], "start_line": 1931, "executed_branches": [[1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999]], "missing_branches": [[1997, 1998]]}, "_logical_batch_rows": {"executed_lines": [2009], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2008, "executed_branches": [], "missing_branches": []}, "_sort_keys": {"executed_lines": [2013, 2021, 2022, 2023], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2012, "executed_branches": [[2021, 2022], [2021, 2023]], "missing_branches": []}, "_validate_l2_delta_columns": {"executed_lines": [2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2026, "executed_branches": [], "missing_branches": []}, "_encoded_l2_group_ranges": {"executed_lines": [2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 12, "num_partial_branches": 0, "covered_branches": 12, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2067, "executed_branches": [[2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088]], "missing_branches": []}, "_try_apply_atomic_l2_delta_batch": {"executed_lines": [2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 94.20289855072464, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [2137, 2178], "excluded_lines": [], "start_line": 2096, "executed_branches": [[2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174]], "missing_branches": [[2136, 2137], [2173, 2178]]}, "_try_apply_uniform_l2_delta_batch": {"executed_lines": [2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 91.48936170212765, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [2241, 2264], "excluded_lines": [], "start_line": 2195, "executed_branches": [[2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268]], "missing_branches": [[2240, 2241], [2263, 2264]]}, "_validate_record_batch": {"executed_lines": [2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2282, "executed_branches": [[2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326]], "missing_branches": []}, "_iter_record_batches": {"executed_lines": [2332, 2333, 2334, 2335, 2336, 2337], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2329, "executed_branches": [[2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337]], "missing_branches": []}, "_l2_group_key": {"executed_lines": [2341, 2342, 2343], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2340, "executed_branches": [], "missing_branches": []}, "_concat_record_batches": {"executed_lines": [2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2351, "executed_branches": [[2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359]], "missing_branches": []}, "_iter_atomic_l2_record_batches": {"executed_lines": [2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 98.03921568627452, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 18, "num_partial_branches": 1, "covered_branches": 17, "missing_branches": 1, "percent_branches_covered": 94.44444444444444, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 2368, "executed_branches": [[2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415]], "missing_branches": [[2408, 2410]]}, "_finalize_strict_batch_snapshot": {"executed_lines": [2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 97.77777777777777, "percent_covered_display": "98", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 2418, "executed_branches": [[2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528]], "missing_branches": [[2527, 2529]]}, "write_normalized_batches_v3": {"executed_lines": [2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647], "summary": {"covered_lines": 48, "num_statements": 49, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.95918367346938, "percent_statements_covered_display": "98", "num_branches": 26, "num_partial_branches": 1, "covered_branches": 25, "missing_branches": 1, "percent_branches_covered": 96.15384615384616, "percent_branches_covered_display": "96"}, "missing_lines": [2646], "excluded_lines": [], "start_line": 2543, "executed_branches": [[2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647]], "missing_branches": [[2645, 2646]]}, "write_normalized_events_v3": {"executed_lines": [2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 110, "num_statements": 115, "percent_covered": 93.08176100628931, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96", "num_branches": 44, "num_partial_branches": 4, "covered_branches": 38, "missing_branches": 6, "percent_branches_covered": 86.36363636363636, "percent_branches_covered_display": "86"}, "missing_lines": [2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 2662, "executed_branches": [[2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 107, 152, 163, 164, 168, 169, 173, 174, 178, 179, 183, 201, 202, 208, 214, 236, 242, 245, 249, 263, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 495, 496, 524, 528, 532, 536, 566, 578, 588, 620, 621, 627, 643, 649, 667, 677, 732, 758, 809, 825, 876, 922, 1000, 1014, 1044, 1091, 1113, 1118, 1151, 1183, 1259, 1263, 1267, 1335, 1378, 1404, 1466, 1503, 1575, 1602, 1779, 1793, 1841, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1903, 1908, 1917, 1931, 2008, 2012, 2026, 2067, 2096, 2195, 2282, 2329, 2340, 2351, 2368, 2418, 2543, 2662], "summary": {"covered_lines": 158, "num_statements": 158, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"_ClaimIndexMissingError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "_InputSpool": {"executed_lines": [203, 204, 205, 206, 209, 210, 211, 212, 215, 216, 217, 218, 226, 227, 231, 232, 233, 234, 237, 238, 239, 240, 243, 246], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[211, -208], [211, 212], [215, 216], [215, 217]], "missing_branches": []}, "_OpenPartition": {"executed_lines": [289, 294, 295, 296, 297, 300, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 321, 322, 323, 324, 325, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 357, 358, 359, 360, 361, 362, 364, 365, 366, 372, 373, 374, 375, 378, 379, 380, 381, 382], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 94.25287356321839, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98", "num_branches": 28, "num_partial_branches": 4, "covered_branches": 24, "missing_branches": 4, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [363], "excluded_lines": [], "start_line": 274, "executed_branches": [[294, 295], [294, 296], [300, 301], [300, 302], [306, 307], [313, 314], [334, 335], [334, 336], [336, 337], [336, 338], [338, 339], [338, 340], [342, 343], [342, 347], [348, -327], [348, 349], [353, 348], [353, 354], [357, 358], [357, 359], [362, 364], [364, 365], [364, 372], [380, 381]], "missing_branches": [[306, 312], [313, 321], [362, 363], [380, -377]]}, "_PartitionSet": {"executed_lines": [387, 388, 389, 390, 391, 394, 399, 400, 401, 402, 406, 413, 414, 415, 416, 417, 418, 420, 421, 424, 425, 426, 440, 445, 446, 447, 448, 452, 459, 460, 461, 462, 469, 470, 471, 474], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95", "num_branches": 18, "num_partial_branches": 2, "covered_branches": 16, "missing_branches": 2, "percent_branches_covered": 88.88888888888889, "percent_branches_covered_display": "89"}, "missing_lines": [419, 427], "excluded_lines": [], "start_line": 385, "executed_branches": [[401, 402], [401, 414], [414, 415], [414, 416], [418, 420], [420, -393], [420, 421], [424, 425], [424, 426], [426, -423], [447, 448], [447, 460], [460, 461], [460, 462], [470, -468], [470, 471]], "missing_branches": [[418, 419], [426, 427]]}, "_JsonArrayDigest": {"executed_lines": [622, 623, 624, 625, 628, 629, 630, 635, 636, 637, 638, 639, 640, 641, 644, 645, 646], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620, "executed_branches": [[628, 629], [628, 630], [635, 636], [635, 637], [638, 639], [638, 640]], "missing_branches": []}, "_ArrowBatchIdentity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1890, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 61, 62, 63, 64, 74, 75, 76, 77, 78, 79, 80, 81, 82, 92, 95, 99, 100, 101, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 163, 164, 165, 168, 169, 170, 173, 174, 175, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 202, 208, 214, 236, 242, 245, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 299, 327, 356, 377, 385, 386, 393, 423, 429, 468, 473, 481, 482, 487, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 518, 519, 520, 521, 524, 525, 528, 529, 532, 533, 536, 537, 538, 547, 548, 549, 550, 551, 552, 553, 559, 560, 561, 562, 563, 566, 567, 568, 569, 575, 578, 579, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 603, 609, 610, 611, 612, 614, 615, 616, 617, 620, 621, 627, 643, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 667, 668, 669, 670, 671, 672, 673, 674, 677, 681, 682, 683, 684, 685, 689, 690, 691, 692, 693, 694, 695, 696, 697, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 715, 716, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 729, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 747, 748, 749, 750, 751, 753, 754, 755, 758, 765, 766, 767, 768, 769, 770, 774, 775, 778, 779, 780, 781, 783, 785, 786, 788, 789, 791, 792, 806, 809, 810, 811, 812, 813, 814, 820, 822, 825, 834, 835, 836, 837, 838, 839, 849, 850, 851, 853, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 872, 876, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 899, 900, 901, 902, 903, 904, 905, 906, 907, 912, 913, 914, 915, 916, 917, 918, 919, 922, 927, 928, 929, 930, 931, 932, 933, 934, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 964, 965, 966, 967, 986, 990, 997, 1000, 1003, 1004, 1014, 1015, 1018, 1022, 1023, 1031, 1044, 1052, 1054, 1055, 1056, 1062, 1063, 1064, 1065, 1067, 1073, 1084, 1085, 1091, 1092, 1093, 1094, 1113, 1114, 1115, 1118, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1130, 1131, 1136, 1137, 1138, 1140, 1141, 1151, 1158, 1165, 1176, 1177, 1183, 1189, 1190, 1191, 1196, 1198, 1199, 1200, 1201, 1206, 1207, 1208, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1230, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247, 1253, 1254, 1255, 1256, 1259, 1260, 1263, 1264, 1267, 1273, 1274, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1321, 1322, 1323, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1335, 1343, 1344, 1345, 1346, 1347, 1353, 1354, 1358, 1359, 1360, 1361, 1367, 1368, 1369, 1370, 1378, 1389, 1404, 1413, 1414, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1430, 1432, 1433, 1434, 1440, 1441, 1442, 1443, 1450, 1451, 1452, 1460, 1461, 1462, 1463, 1466, 1471, 1472, 1473, 1479, 1480, 1481, 1488, 1489, 1490, 1498, 1500, 1503, 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1513, 1518, 1519, 1523, 1524, 1525, 1526, 1527, 1532, 1533, 1539, 1540, 1547, 1548, 1549, 1559, 1561, 1562, 1563, 1564, 1572, 1575, 1581, 1582, 1583, 1584, 1585, 1586, 1597, 1598, 1599, 1602, 1609, 1610, 1611, 1616, 1621, 1623, 1626, 1627, 1630, 1631, 1632, 1635, 1636, 1639, 1640, 1641, 1649, 1650, 1651, 1666, 1667, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707, 1709, 1710, 1712, 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1739, 1746, 1754, 1755, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1789, 1790, 1793, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1817, 1822, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1837, 1838, 1841, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1879, 1880, 1881, 1882, 1886, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1898, 1899, 1900, 1903, 1904, 1905, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1917, 1918, 1919, 1920, 1921, 1922, 1925, 1931, 1936, 1937, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1950, 1951, 1952, 1953, 1954, 1955, 1959, 1960, 1961, 1962, 1965, 1969, 1970, 1971, 1972, 1977, 1978, 1979, 1980, 1983, 1987, 1991, 1992, 1996, 1997, 1999, 2008, 2009, 2012, 2013, 2021, 2022, 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2041, 2042, 2043, 2047, 2051, 2055, 2056, 2060, 2064, 2067, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2105, 2106, 2107, 2108, 2109, 2110, 2113, 2116, 2117, 2118, 2119, 2120, 2121, 2125, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2138, 2139, 2140, 2141, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2169, 2170, 2171, 2172, 2173, 2174, 2180, 2181, 2182, 2187, 2192, 2195, 2204, 2205, 2206, 2209, 2212, 2213, 2214, 2215, 2216, 2217, 2221, 2225, 2226, 2227, 2228, 2229, 2230, 2236, 2237, 2238, 2239, 2240, 2242, 2243, 2244, 2245, 2259, 2260, 2261, 2262, 2263, 2268, 2269, 2274, 2279, 2282, 2292, 2293, 2294, 2295, 2302, 2303, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2326, 2329, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2341, 2342, 2343, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2368, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2386, 2387, 2390, 2393, 2397, 2398, 2400, 2401, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2412, 2413, 2414, 2415, 2418, 2432, 2438, 2439, 2445, 2451, 2452, 2453, 2464, 2474, 2475, 2476, 2482, 2486, 2492, 2493, 2494, 2495, 2496, 2498, 2499, 2500, 2501, 2507, 2512, 2513, 2514, 2515, 2516, 2517, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2535, 2543, 2560, 2561, 2562, 2563, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2604, 2607, 2616, 2625, 2626, 2627, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2645, 2647, 2662, 2672, 2673, 2674, 2675, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2734, 2735, 2736, 2737, 2742, 2744, 2745, 2746, 2747, 2749, 2750, 2758, 2759, 2760, 2761, 2762, 2769, 2770, 2771, 2772, 2775, 2776, 2785, 2797, 2798, 2804, 2807, 2812, 2813, 2814, 2815, 2816, 2822, 2823, 2824, 2835, 2844, 2845, 2846, 2852, 2856, 2857, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2873, 2874, 2875, 2876, 2882, 2887, 2888, 2889, 2890, 2891, 2892, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2910], "summary": {"covered_lines": 1280, "num_statements": 1316, "percent_covered": 95.57522123893806, "percent_covered_display": "96", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 97.26443768996961, "percent_statements_covered_display": "97", "num_branches": 492, "num_partial_branches": 40, "covered_branches": 448, "missing_branches": 44, "percent_branches_covered": 91.0569105691057, "percent_branches_covered_display": "91"}, "missing_lines": [709, 717, 782, 790, 852, 873, 991, 992, 993, 994, 1053, 1066, 1128, 1197, 1218, 1242, 1275, 1327, 1431, 1512, 1560, 1622, 1706, 1938, 1939, 1998, 2137, 2178, 2241, 2264, 2646, 2748, 2751, 2752, 2753, 2805], "excluded_lines": [], "start_line": 1, "executed_branches": [[111, 112], [111, 120], [115, 116], [115, 117], [117, 118], [117, 120], [120, 121], [120, 138], [122, 123], [122, 124], [124, 125], [124, 126], [126, 127], [126, 128], [130, 131], [130, 132], [132, 133], [132, 134], [134, 135], [134, 136], [140, 141], [140, 142], [142, 143], [142, 144], [144, 145], [144, 146], [146, 147], [146, 148], [148, -107], [148, 149], [157, 158], [157, 160], [187, 188], [187, 198], [189, 190], [189, 193], [191, 189], [191, 192], [193, 194], [193, 197], [195, 193], [195, 196], [251, -249], [251, 252], [252, 253], [252, 254], [255, 256], [255, 257], [257, 251], [257, 258], [258, 259], [258, 260], [264, 265], [264, 266], [266, 267], [266, 268], [268, 269], [268, 270], [499, 500], [499, 510], [501, 502], [501, 503], [506, 507], [518, 519], [520, 521], [537, 538], [537, 547], [547, 548], [547, 549], [549, 550], [549, 560], [551, 552], [551, 559], [560, 561], [560, 563], [568, 569], [568, 575], [589, 590], [589, 591], [609, 610], [609, 614], [614, 615], [653, 654], [653, 664], [655, 656], [655, 659], [657, 658], [659, 660], [659, 663], [661, 662], [668, 669], [668, 670], [670, 671], [670, 672], [672, 673], [672, 674], [684, 685], [684, 689], [689, 690], [689, 719], [706, 707], [706, 713], [708, 710], [716, 718], [721, 722], [721, 727], [742, 743], [742, 747], [747, 748], [747, 753], [766, 767], [766, 806], [769, 770], [769, 774], [774, 775], [774, 778], [778, 779], [778, 788], [781, 783], [789, 791], [810, 811], [810, 812], [834, 835], [834, 836], [851, 853], [886, 887], [894, 895], [894, 915], [896, 897], [896, 899], [900, 901], [900, 907], [904, 905], [940, 941], [940, 986], [943, 944], [943, 966], [946, 947], [946, 964], [990, 997], [1022, 1023], [1022, 1031], [1052, 1054], [1063, 1064], [1063, 1073], [1065, 1067], [1122, 1123], [1122, 1124], [1124, 1125], [1124, 1131], [1127, 1130], [1189, 1190], [1189, 1191], [1196, 1198], [1200, 1201], [1200, 1220], [1217, 1219], [1241, 1243], [1254, 1255], [1254, 1256], [1274, 1276], [1278, 1279], [1278, 1280], [1286, 1287], [1286, 1288], [1288, 1299], [1288, 1300], [1303, 1304], [1303, 1318], [1305, 1306], [1305, 1307], [1309, 1310], [1309, 1312], [1313, 1314], [1313, 1315], [1315, 1316], [1315, 1317], [1322, 1323], [1322, 1324], [1324, 1325], [1324, 1326], [1326, 1329], [1330, 1331], [1330, 1332], [1345, 1346], [1345, 1367], [1430, 1432], [1432, 1433], [1432, 1442], [1460, 1461], [1460, 1462], [1488, 1489], [1488, 1500], [1490, 1488], [1490, 1498], [1506, 1507], [1506, 1508], [1510, 1511], [1510, 1572], [1511, 1513], [1518, 1519], [1518, 1564], [1559, 1561], [1561, 1562], [1582, 1583], [1582, 1584], [1598, -1575], [1598, 1599], [1621, 1623], [1641, 1649], [1641, 1650], [1667, 1671], [1667, 1672], [1674, 1675], [1674, 1679], [1675, 1676], [1675, 1677], [1682, 1683], [1682, 1729], [1683, 1684], [1683, 1685], [1686, 1687], [1686, 1688], [1694, 1695], [1694, 1696], [1696, 1697], [1696, 1698], [1700, 1701], [1700, 1702], [1702, 1703], [1702, 1712], [1705, 1707], [1718, 1719], [1718, 1720], [1720, 1721], [1720, 1723], [1724, 1725], [1724, 1726], [1726, 1727], [1726, 1728], [1729, 1730], [1729, 1731], [1731, 1732], [1731, 1733], [1736, 1737], [1736, 1738], [1738, 1739], [1738, 1746], [1782, 1783], [1782, 1790], [1784, 1785], [1784, 1786], [1786, 1787], [1786, 1789], [1803, 1804], [1803, 1805], [1812, 1813], [1812, 1817], [1817, 1822], [1817, 1826], [1826, 1827], [1826, 1838], [1830, 1831], [1830, 1838], [1832, 1833], [1832, 1837], [1854, 1855], [1854, 1870], [1856, 1857], [1856, 1858], [1870, 1871], [1870, 1886], [1871, 1872], [1871, 1873], [1873, 1874], [1873, 1880], [1874, 1875], [1874, 1879], [1881, 1870], [1881, 1882], [1904, -1903], [1904, 1905], [1909, 1910], [1909, 1911], [1912, 1913], [1912, 1914], [1920, 1921], [1920, 1922], [1941, 1942], [1941, 1943], [1946, 1947], [1946, 1950], [1950, 1951], [1950, 1953], [1951, 1950], [1951, 1952], [1953, 1954], [1953, 1959], [1960, 1961], [1960, 1962], [1972, 1977], [1972, 1983], [1997, 1999], [2021, 2022], [2021, 2023], [2070, 2071], [2070, 2072], [2074, 2075], [2074, 2076], [2080, 2081], [2080, 2092], [2082, 2083], [2082, 2086], [2083, 2084], [2083, 2091], [2086, 2087], [2086, 2088], [2106, 2107], [2106, 2108], [2120, 2121], [2120, 2130], [2133, 2134], [2133, 2143], [2136, 2138], [2138, 2139], [2138, 2140], [2140, 2133], [2140, 2141], [2153, 2154], [2153, 2180], [2171, 2153], [2171, 2172], [2173, 2174], [2216, 2217], [2216, 2225], [2230, 2236], [2230, 2237], [2240, 2242], [2261, 2262], [2261, 2269], [2263, 2268], [2293, 2294], [2293, 2313], [2302, 2303], [2302, 2311], [2311, 2312], [2311, 2313], [2315, 2316], [2315, 2326], [2333, -2329], [2333, 2334], [2334, 2335], [2334, 2336], [2336, 2333], [2336, 2337], [2352, 2353], [2352, 2354], [2354, 2355], [2354, 2356], [2357, 2358], [2357, 2359], [2373, 2374], [2373, 2414], [2375, 2376], [2375, 2382], [2376, 2377], [2376, 2379], [2386, 2387], [2386, 2403], [2393, 2397], [2393, 2400], [2403, 2404], [2403, 2406], [2406, 2407], [2406, 2412], [2408, 2409], [2414, -2368], [2414, 2415], [2451, 2452], [2451, 2453], [2495, 2496], [2495, 2507], [2499, 2500], [2499, 2501], [2527, 2528], [2574, 2575], [2574, 2576], [2576, 2577], [2576, 2578], [2578, 2579], [2578, 2582], [2579, 2580], [2579, 2581], [2596, 2597], [2596, 2629], [2598, 2599], [2598, 2607], [2626, 2596], [2626, 2627], [2630, 2631], [2630, 2638], [2631, 2632], [2631, 2635], [2632, 2633], [2632, 2634], [2636, 2630], [2636, 2637], [2638, 2639], [2638, 2645], [2645, 2647], [2686, 2687], [2686, 2688], [2688, 2689], [2688, 2690], [2690, 2691], [2690, 2694], [2691, 2692], [2691, 2693], [2709, 2710], [2709, 2742], [2713, 2714], [2713, 2716], [2728, 2729], [2728, 2734], [2735, 2709], [2735, 2736], [2744, 2745], [2744, 2758], [2745, 2746], [2745, 2749], [2746, 2747], [2749, 2750], [2759, 2760], [2759, 2761], [2761, 2762], [2761, 2769], [2775, 2776], [2775, 2785], [2797, 2798], [2797, 2804], [2804, 2807], [2822, 2823], [2822, 2824], [2870, 2871], [2870, 2882], [2874, 2875], [2874, 2876], [2902, 2903]], "missing_branches": [[506, 499], [518, 520], [520, -495], [614, 616], [657, 655], [661, 659], [708, 709], [716, 717], [781, 782], [789, 790], [851, 852], [886, 888], [904, 906], [990, 991], [992, 993], [992, 994], [1052, 1053], [1065, 1066], [1127, 1128], [1196, 1197], [1217, 1218], [1241, 1242], [1274, 1275], [1326, 1327], [1430, 1431], [1511, 1512], [1559, 1560], [1561, 1563], [1621, 1622], [1705, 1706], [1997, 1998], [2136, 2137], [2173, 2178], [2240, 2241], [2263, 2264], [2408, 2410], [2527, 2529], [2645, 2646], [2746, 2748], [2749, 2751], [2752, 2744], [2752, 2753], [2804, 2805], [2902, 2904]]}}}, "src\\quant_data_kit\\panel.py": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]], "functions": {"merge_earnings_to_panel": {"executed_lines": [10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [11, 12, 13, 27, 28], "excluded_lines": [], "start_line": 8, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30]], "missing_branches": [[10, 11], [26, 27]]}, "merge_northbound_to_panel": {"executed_lines": [44, 49, 54], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [45, 46, 47], "excluded_lines": [], "start_line": 43, "executed_branches": [[44, 49]], "missing_branches": [[44, 45]]}, "add_industry_relative_strength": {"executed_lines": [64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [65, 66, 67], "excluded_lines": [], "start_line": 57, "executed_branches": [[64, 69]], "missing_branches": [[64, 65]]}, "": {"executed_lines": [3, 5, 8, 43, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 8, 10, 15, 18, 19, 20, 22, 23, 26, 30, 37, 39, 40, 43, 44, 49, 54, 57, 64, 69, 70, 71, 75, 76, 77, 78, 80, 81, 83, 88], "summary": {"covered_lines": 32, "num_statements": 43, "percent_covered": 71.69811320754717, "percent_covered_display": "72", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 74.4186046511628, "percent_statements_covered_display": "74", "num_branches": 10, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [11, 12, 13, 27, 28, 45, 46, 47, 65, 66, 67], "excluded_lines": [], "start_line": 1, "executed_branches": [[10, 15], [22, 23], [22, 39], [26, 30], [44, 49], [64, 69]], "missing_branches": [[10, 11], [26, 27], [44, 45], [64, 65]]}}}, "src\\quant_data_kit\\process_lock.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": [], "functions": {"_acquire_windows_lock": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [[29, 30], [29, 31]], "missing_branches": []}, "_release_windows_lock": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "_acquire_posix_lock": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43, "executed_branches": [[57, 58], [57, 59]], "missing_branches": []}, "_release_posix_lock": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "_windows_file_lock": {"executed_lines": [73, 75, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72, "executed_branches": [], "missing_branches": []}, "_posix_file_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "_platform_lock_backend": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "process_file_lock": {"executed_lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 34, 43, 62, 71, 72, 93, 94, 114, 120, 126, 127], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 15, 24, 25, 26, 27, 28, 29, 30, 31, 34, 40, 43, 52, 53, 54, 55, 56, 57, 58, 59, 62, 68, 71, 72, 73, 75, 82, 83, 85, 86, 93, 94, 114, 120, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 59, "num_statements": 64, "percent_covered": 93.05555555555556, "percent_covered_display": "93", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 92.1875, "percent_statements_covered_display": "92", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [95, 97, 104, 105, 107], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 31], [57, 58], [57, 59], [129, 130], [129, 131], [134, 135], [134, 138]], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\_fetch.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]], "functions": {"fetch_with_retries": {"executed_lines": [19, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26], "excluded_lines": [], "start_line": 12, "executed_branches": [[20, 21]], "missing_branches": [[20, 26]]}, "fetch_symbols_parallel": {"executed_lines": [37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 55.0, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 29, "executed_branches": [[38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[38, 42], [44, 45], [44, 47], [47, 48]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 12, 19, 20, 21, 22, 29, 37, 38, 39, 40, 47, 50, 51], "summary": {"covered_lines": 18, "num_statements": 27, "percent_covered": 62.16216216216216, "percent_covered_display": "62", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 10, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 5, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [23, 24, 25, 26, 42, 43, 44, 45, 48], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [38, 39], [39, 40], [39, 47], [47, 50]], "missing_branches": [[20, 26], [38, 42], [44, 45], [44, 47], [47, 48]]}}}, "src\\quant_data_kit\\providers\\_network.py": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "executed_branches": [], "missing_branches": [[11, -6], [11, 12]], "functions": {"configure_network": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}, "": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [8, 10, 11, 12], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[11, -6], [11, 12]]}}}, "src\\quant_data_kit\\providers\\_symbols.py": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "executed_branches": [], "missing_branches": [[12, 13], [12, 14]], "functions": {"normalize_symbol": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "to_market_symbol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}, "": {"executed_lines": [3, 6, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 6, 7, 10], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[12, 13], [12, 14]]}}}, "src\\quant_data_kit\\providers\\akshare.py": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "src\\quant_data_kit\\providers\\benchmark.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "executed_branches": [], "missing_branches": [[26, 27], [26, 29]], "functions": {"fetch_hs300_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 13, 15, 18], "summary": {"covered_lines": 9, "num_statements": 25, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 36.0, "percent_statements_covered_display": "36", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [23, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[26, 27], [26, 29]]}}}, "src\\quant_data_kit\\providers\\earnings_forecast.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]], "functions": {"_score_forecast_type": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 41, "executed_branches": [[43, 44], [44, 45]], "missing_branches": [[43, 46], [44, 43]]}, "_quarter_end_dates": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [[53, 54], [53, 58], [54, 53], [54, 55], [56, 57]], "missing_branches": [[56, 54]]}, "fetch_earnings_forecasts": {"executed_lines": [68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 20, "num_statements": 33, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 60.60606060606061, "percent_statements_covered_display": "61", "num_branches": 12, "num_partial_branches": 4, "covered_branches": 6, "missing_branches": 6, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 61, "executed_branches": [[69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 49, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 29, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 84, 87, 88, 89, 93, 94, 95, 97, 101, 111, 112, 113, 115, 118, 119, 120], "summary": {"covered_lines": 47, "num_statements": 61, "percent_covered": 72.28915662650603, "percent_covered_display": "72", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 77.04918032786885, "percent_statements_covered_display": "77", "num_branches": 22, "num_partial_branches": 7, "covered_branches": 13, "missing_branches": 9, "percent_branches_covered": 59.09090909090909, "percent_branches_covered_display": "59"}, "missing_lines": [46, 73, 75, 76, 77, 78, 79, 80, 81, 82, 85, 98, 99, 116], "excluded_lines": [], "start_line": 1, "executed_branches": [[43, 44], [44, 45], [53, 54], [53, 58], [54, 53], [54, 55], [56, 57], [69, 70], [69, 115], [70, 71], [84, 87], [97, 101], [115, 118]], "missing_branches": [[43, 46], [44, 43], [56, 54], [70, 73], [81, 82], [81, 84], [84, 85], [97, 98], [115, 116]]}}}, "src\\quant_data_kit\\providers\\fundamentals.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]], "functions": {"_fetch_one_fundamental": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}, "fetch_fundamentals": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [76, 77, 79, 87], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "fetch_fundamentals._task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [80], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 24, 33, 67], "summary": {"covered_lines": 12, "num_statements": 36, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [40, 41, 43, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 76, 77, 79, 80, 87], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": [[40, 41], [40, 43], [47, 48], [47, 50], [56, 57], [56, 59], [60, 61], [60, 63]]}}}, "src\\quant_data_kit\\providers\\industry.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]], "functions": {"fetch_industry_returns": {"executed_lines": [27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 14, "num_statements": 27, "percent_covered": 51.42857142857143, "percent_covered_display": "51", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 51.851851851851855, "percent_statements_covered_display": "52", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 19, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 14, 16, 19, 27, 28, 29, 31, 32, 33, 56, 57, 58, 59, 60, 62, 65, 66], "summary": {"covered_lines": 24, "num_statements": 37, "percent_covered": 62.22222222222222, "percent_covered_display": "62", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 64.86486486486487, "percent_statements_covered_display": "65", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [35, 37, 38, 39, 46, 47, 48, 49, 50, 52, 53, 54, 63], "excluded_lines": [], "start_line": 1, "executed_branches": [[31, 32], [31, 62], [32, 33], [62, 65]], "missing_branches": [[32, 35], [49, 50], [49, 52], [62, 63]]}}}, "src\\quant_data_kit\\providers\\northbound.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]], "functions": {"_fetch_one_northbound": {"executed_lines": [25, 26, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 8, "num_statements": 24, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60], "excluded_lines": [], "start_line": 20, "executed_branches": [[25, 26]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53]]}, "fetch_northbound_holdings": {"executed_lines": [77, 79, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 4, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 71, "executed_branches": [[86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[86, 90], [92, 93], [92, 95], [96, 97]]}, "fetch_northbound_holdings._task": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [82, 83, 84], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 71], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 10, 12, 13, 15, 17, 20, 25, 26, 62, 63, 64, 66, 67, 68, 71, 77, 79, 80, 81, 86, 87, 88, 95, 96, 99, 100], "summary": {"covered_lines": 31, "num_statements": 55, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 56.36363636363637, "percent_statements_covered_display": "56", "num_branches": 14, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 9, "percent_branches_covered": 35.714285714285715, "percent_branches_covered_display": "36"}, "missing_lines": [28, 30, 31, 32, 33, 34, 35, 36, 38, 39, 41, 42, 50, 51, 53, 60, 82, 83, 84, 90, 91, 92, 93, 97], "excluded_lines": [], "start_line": 1, "executed_branches": [[25, 26], [86, 87], [87, 88], [87, 95], [96, 99]], "missing_branches": [[25, 28], [38, 39], [38, 41], [50, 51], [50, 53], [86, 90], [92, 93], [92, 95], [96, 97]]}}}, "src\\quant_data_kit\\providers\\prices.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]], "functions": {"_fetch_one_price": {"executed_lines": [37, 38, 76, 77, 78, 79], "summary": {"covered_lines": 6, "num_statements": 20, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 30, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}, "fetch_daily_prices": {"executed_lines": [91, 92, 94, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82, "executed_branches": [], "missing_branches": []}, "fetch_daily_prices._task": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 82], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 11, 12, 13, 15, 17, 30, 37, 38, 76, 77, 78, 79, 82, 91, 92, 94, 95, 102], "summary": {"covered_lines": 23, "num_statements": 37, "percent_covered": 55.81395348837209, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 62.16216216216216, "percent_statements_covered_display": "62", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 5, "percent_branches_covered": 16.666666666666668, "percent_branches_covered_display": "17"}, "missing_lines": [40, 42, 43, 44, 45, 52, 62, 63, 64, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1, "executed_branches": [[37, 38]], "missing_branches": [[37, 40], [70, 71], [70, 72], [73, 74], [73, 76]]}}}, "src\\quant_data_kit\\providers\\universe.py": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]], "functions": {"fetch_hs300_constituents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30], "excluded_lines": [], "start_line": 20, "executed_branches": [], "missing_branches": [[21, 22], [21, 24]]}, "fetch_hs300_constituents_history": {"executed_lines": [41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 20, "num_statements": 75, "percent_covered": 24.031007751937985, "percent_covered_display": "24", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 26.666666666666668, "percent_statements_covered_display": "27", "num_branches": 54, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 43, "percent_branches_covered": 20.37037037037037, "percent_branches_covered_display": "20"}, "missing_lines": [44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 33, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}, "": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 10, 11, 12, 13, 15, 17, 20, 33, 41, 42, 49, 54, 57, 58, 62, 63, 67, 68, 73, 74, 75, 79, 82, 83, 87, 88, 91, 96], "summary": {"covered_lines": 32, "num_statements": 94, "percent_covered": 28.666666666666668, "percent_covered_display": "29", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 34.04255319148936, "percent_statements_covered_display": "34", "num_branches": 56, "num_partial_branches": 9, "covered_branches": 11, "missing_branches": 45, "percent_branches_covered": 19.642857142857142, "percent_branches_covered_display": "20"}, "missing_lines": [21, 22, 24, 26, 27, 29, 30, 44, 46, 47, 59, 60, 61, 64, 65, 66, 69, 70, 71, 84, 86, 97, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 1, "executed_branches": [[41, 42], [57, 58], [58, 62], [62, 63], [63, 67], [67, 68], [68, 73], [73, 74], [74, 75], [74, 79], [83, 87]], "missing_branches": [[21, 22], [21, 24], [41, 44], [57, 62], [58, 59], [59, 58], [59, 60], [62, 67], [63, 64], [64, 63], [64, 65], [67, 73], [68, 69], [69, 68], [69, 70], [73, 97], [83, 84], [103, 104], [103, 107], [111, 112], [111, 122], [113, 114], [113, 115], [117, 118], [117, 119], [119, 111], [119, 120], [126, 127], [126, 139], [127, 128], [127, 136], [130, 131], [130, 135], [131, 132], [131, 133], [133, 134], [133, 135], [136, 126], [136, 137], [139, 140], [139, 144], [140, 141], [140, 144], [141, 140], [141, 142]]}}}, "src\\quant_data_kit\\schemas_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]], "functions": {"_field": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_object_schema": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_event_schema": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "_timestamp": {"executed_lines": [394, 395, 397], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [396], "excluded_lines": [], "start_line": 393, "executed_branches": [[395, 397]], "missing_branches": [[395, 396]]}, "_fixed_value": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400, "executed_branches": [], "missing_branches": []}, "_require_positive": {"executed_lines": [406, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405, "executed_branches": [[407, 408], [407, 409]], "missing_branches": []}, "_require_non_negative": {"executed_lines": [413, 414, 415, 416], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412, "executed_branches": [[414, 415], [414, 416]], "missing_branches": []}, "_validate_event_semantics": {"executed_lines": [420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500], "summary": {"covered_lines": 78, "num_statements": 80, "percent_covered": 96.57534246575342, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.5, "percent_statements_covered_display": "98", "num_branches": 66, "num_partial_branches": 3, "covered_branches": 63, "missing_branches": 3, "percent_branches_covered": 95.45454545454545, "percent_branches_covered_display": "95"}, "missing_lines": [426, 468], "excluded_lines": [], "start_line": 419, "executed_branches": [[423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500]], "missing_branches": [[425, 426], [467, 468], [499, -419]]}, "_validate_record_semantics": {"executed_lines": [504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 1, "covered_branches": 15, "missing_branches": 1, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525]], "missing_branches": [[524, -503]]}, "_validate_knowledge_interval": {"executed_lines": [529, 532], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [[529, -528], [529, 532]], "missing_branches": []}, "get_arrow_schema": {"executed_lines": [536, 537, 538, 539, 540, 541], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535, "executed_branches": [[536, 537], [536, 538]], "missing_branches": []}, "get_json_schema": {"executed_lines": [545, 546, 547, 548, 549, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544, "executed_branches": [[545, 546], [545, 547]], "missing_branches": []}, "_compiled_json_validator": {"executed_lines": [558, 559, 560, 561, 564], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 554, "executed_branches": [[558, 559], [558, 560]], "missing_branches": []}, "validate_json_record": {"executed_lines": [572, 573, 574, 575, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "validate_event_stream": {"executed_lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580, "executed_branches": [[587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623]], "missing_branches": []}, "validate_arrow_table": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 626, "executed_branches": [[632, -626], [632, 633]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 52, 64, 69, 187, 196, 206, 207, 208, 211, 221, 234, 290, 297, 380, 393, 400, 405, 412, 419, 503, 528, 535, 544, 553, 554, 567, 580, 626], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 38, 45, 48, 49, 52, 64, 69, 187, 196, 206, 207, 208, 211, 212, 221, 234, 290, 291, 292, 293, 294, 297, 380, 393, 394, 395, 397, 400, 401, 402, 405, 406, 407, 408, 409, 412, 413, 414, 415, 416, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 503, 504, 505, 506, 507, 508, 509, 512, 513, 514, 515, 518, 519, 520, 523, 524, 525, 528, 529, 532, 535, 536, 537, 538, 539, 540, 541, 544, 545, 546, 547, 548, 549, 550, 553, 554, 558, 559, 560, 561, 564, 567, 572, 573, 574, 575, 576, 577, 580, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 602, 608, 609, 610, 614, 619, 623, 626, 631, 632, 633], "summary": {"covered_lines": 221, "num_statements": 226, "percent_covered": 97.0059880239521, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.78761061946902, "percent_statements_covered_display": "98", "num_branches": 108, "num_partial_branches": 5, "covered_branches": 103, "missing_branches": 5, "percent_branches_covered": 95.37037037037037, "percent_branches_covered_display": "95"}, "missing_lines": [396, 426, 468, 562, 563], "excluded_lines": [], "start_line": 1, "executed_branches": [[395, 397], [407, 408], [407, 409], [414, 415], [414, 416], [423, 424], [423, 425], [425, 428], [428, 429], [428, 437], [433, 434], [433, 435], [435, -419], [435, 436], [437, 438], [437, 440], [440, 441], [440, 456], [443, 444], [443, 445], [445, 446], [445, 447], [449, 450], [449, 451], [451, 452], [451, 453], [453, 454], [453, 455], [456, 457], [456, 471], [458, 459], [458, 460], [460, 461], [460, 463], [465, 466], [465, 467], [467, 469], [469, -419], [469, 470], [471, 472], [471, 480], [474, 475], [474, 476], [476, 477], [476, 478], [478, -419], [478, 479], [480, 481], [480, 485], [481, 482], [481, 483], [483, -419], [483, 484], [485, 486], [485, 487], [487, -419], [487, 488], [490, 491], [490, 492], [492, 493], [492, 494], [494, 495], [494, 499], [495, 496], [495, 497], [497, -419], [497, 498], [499, 500], [504, 505], [504, 506], [506, 507], [506, 514], [507, 508], [507, 509], [509, 512], [509, 513], [514, 515], [514, 520], [515, 518], [515, 519], [520, 523], [520, 524], [524, 525], [529, -528], [529, 532], [536, 537], [536, 538], [545, 546], [545, 547], [558, 559], [558, 560], [574, 575], [574, 577], [587, -580], [587, 588], [595, 596], [595, 597], [609, 610], [609, 614], [614, 619], [614, 623], [632, -626], [632, 633]], "missing_branches": [[395, 396], [425, 426], [467, 468], [499, -419], [524, -503]]}}}, "src\\quant_data_kit\\snapshots.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]], "functions": {"_canonical_frame_bytes": {"executed_lines": [37, 38, 39, 40, 43], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [], "excluded_lines": [], "start_line": 36, "executed_branches": [[39, 40]], "missing_branches": [[39, 43]]}, "frame_sha256": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46, "executed_branches": [], "missing_branches": []}, "schema_sha256": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "create_snapshot": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 5, "missing_branches": 3, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [71, 96, 99], "excluded_lines": [], "start_line": 56, "executed_branches": [[70, 72], [94, 95], [94, 101], [95, 97], [98, 100]], "missing_branches": [[70, 71], [95, 96], [98, 99]]}, "load_snapshot": {"executed_lines": [110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [114], "excluded_lines": [], "start_line": 109, "executed_branches": [[113, 115], [116, 117], [116, 118]], "missing_branches": [[113, 114]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 46, 50, 56, 109], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DatasetSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 46, 47, 50, 51, 52, 53, 56, 70, 72, 73, 74, 75, 76, 77, 94, 95, 97, 98, 100, 101, 102, 103, 106, 109, 110, 111, 112, 113, 115, 116, 117, 118], "summary": {"covered_lines": 64, "num_statements": 68, "percent_covered": 89.02439024390245, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94", "num_branches": 14, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 5, "percent_branches_covered": 64.28571428571429, "percent_branches_covered_display": "64"}, "missing_lines": [71, 96, 99, 114], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 40], [70, 72], [94, 95], [94, 101], [95, 97], [98, 100], [113, 115], [116, 117], [116, 118]], "missing_branches": [[39, 43], [70, 71], [95, 96], [98, 99], [113, 114]]}}}, "src\\quant_data_kit\\storage.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]], "functions": {"save_parquet": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31, "executed_branches": [], "missing_branches": []}, "load_parquet": {"executed_lines": [38, 39, 41], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [40], "excluded_lines": [], "start_line": 37, "executed_branches": [[39, 41]], "missing_branches": [[39, 40]]}, "_date_bounds": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [46], "excluded_lines": [], "start_line": 44, "executed_branches": [[45, 47]], "missing_branches": [[45, 46]]}, "build_manifest": {"executed_lines": [62, 63, 64, 67, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51, "executed_branches": [], "missing_branches": []}, "write_manifest": {"executed_lines": [88, 89, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87, "executed_branches": [], "missing_branches": []}, "save_manifest": {"executed_lines": [107, 108, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95, "executed_branches": [], "missing_branches": []}, "load_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [124, 125, 126], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "parse_date": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "cache_covers_range": {"executed_lines": [140, 142, 143, 144, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [141], "excluded_lines": [], "start_line": 133, "executed_branches": [[140, 142]], "missing_branches": [[140, 141]]}, "should_refresh_cache": {"executed_lines": [155, 156, 158, 159], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [157], "excluded_lines": [], "start_line": 148, "executed_branches": [[156, 158]], "missing_branches": [[156, 157]]}, "incremental_start_date": {"executed_lines": [163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [168], "excluded_lines": [], "start_line": 162, "executed_branches": [[164, 165], [164, 166], [167, 169]], "missing_branches": [[167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44, 51, 87, 95, 123, 129, 133, 148, 162], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"DataManifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, 38, 39, 41, 44, 45, 47, 48, 51, 62, 63, 64, 67, 71, 87, 88, 89, 90, 95, 107, 108, 118, 119, 120, 123, 129, 130, 133, 140, 142, 143, 144, 145, 148, 155, 156, 158, 159, 162, 163, 164, 165, 166, 167, 169, 170], "summary": {"covered_lines": 72, "num_statements": 80, "percent_covered": 85.8695652173913, "percent_covered_display": "86", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 12, "num_partial_branches": 5, "covered_branches": 7, "missing_branches": 5, "percent_branches_covered": 58.333333333333336, "percent_branches_covered_display": "58"}, "missing_lines": [40, 46, 124, 125, 126, 141, 157, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[39, 41], [45, 47], [140, 142], [156, 158], [164, 165], [164, 166], [167, 169]], "missing_branches": [[39, 40], [45, 46], [140, 141], [156, 157], [167, 168]]}}}, "src\\quant_data_kit\\temporal.py": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]], "functions": {"_normalize_times": {"executed_lines": [28, 29, 30, 32, 33, 35], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [31, 34], "excluded_lines": [], "start_line": 27, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29]], "missing_branches": [[30, 31], [33, 34]]}, "point_in_time_join": {"executed_lines": [55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 69.38775510204081, "percent_covered_display": "69", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [56, 60, 72, 86, 87, 88, 89, 104], "excluded_lines": [], "start_line": 38, "executed_branches": [[55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105]], "missing_branches": [[55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104]]}, "audit_point_in_time": {"executed_lines": [115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [117, 127, 128, 129], "excluded_lines": [], "start_line": 108, "executed_branches": [[116, 118], [121, 122], [121, 123], [126, 130]], "missing_branches": [[116, 117], [126, 127]]}, "apply_symbol_lifecycle": {"executed_lines": [149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [150, 154], "excluded_lines": [], "start_line": 139, "executed_branches": [[149, 151], [153, 155]], "missing_branches": [[149, 150], [153, 154]]}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 38, 108, 139], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"TemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [8, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 38, 55, 57, 58, 59, 62, 63, 64, 65, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 85, 91, 100, 102, 103, 105, 108, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 130, 139, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 72, "num_statements": 88, "percent_covered": 75.83333333333333, "percent_covered_display": "76", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 32, "num_partial_branches": 11, "covered_branches": 19, "missing_branches": 13, "percent_branches_covered": 59.375, "percent_branches_covered_display": "59"}, "missing_lines": [31, 34, 56, 60, 72, 86, 87, 88, 89, 104, 117, 127, 128, 129, 150, 154], "excluded_lines": [], "start_line": 1, "executed_branches": [[29, 30], [29, 35], [30, 32], [33, 29], [55, 57], [59, 62], [71, 74], [77, 78], [77, 102], [80, 81], [80, 82], [85, 91], [103, 105], [116, 118], [121, 122], [121, 123], [126, 130], [149, 151], [153, 155]], "missing_branches": [[30, 31], [33, 34], [55, 56], [59, 60], [71, 72], [85, 86], [88, 89], [88, 100], [103, 104], [116, 117], [126, 127], [149, 150], [153, 154]]}}}, "src\\quant_data_kit\\temporal_v2.py": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 93, "num_statements": 113, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 82.30088495575221, "percent_statements_covered_display": "82", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 33, "missing_branches": 15, "percent_branches_covered": 68.75, "percent_branches_covered_display": "69"}, "missing_lines": [20, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 25], [24, 27], [25, 29], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [25, 26], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]], "functions": {"ensure_utc_datetime": {"executed_lines": [18, 19, 21, 22, 23, 24, 25, 27, 28, 29], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [20, 26], "excluded_lines": [], "start_line": 16, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 25], [24, 27], [25, 29], [27, 28], [27, 29]], "missing_branches": [[19, 20], [25, 26]]}, "_utc_series": {"executed_lines": [33, 35, 36, 37, 38, 39, 40, 42, 43], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 8, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 2, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [34, 41], "excluded_lines": [], "start_line": 32, "executed_branches": [[33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39]], "missing_branches": [[33, 34], [38, 41]]}, "validate_bitemporal_frame": {"executed_lines": [62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105], "summary": {"covered_lines": 21, "num_statements": 33, "percent_covered": 61.224489795918366, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64", "num_branches": 16, "num_partial_branches": 5, "covered_branches": 9, "missing_branches": 7, "percent_branches_covered": 56.25, "percent_branches_covered_display": "56"}, "missing_lines": [64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104], "excluded_lines": [], "start_line": 52, "executed_branches": [[63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105]], "missing_branches": [[63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104]]}, "point_in_time_join_bitemporal": {"executed_lines": [122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 38, "num_statements": 42, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90", "num_branches": 14, "num_partial_branches": 4, "covered_branches": 10, "missing_branches": 4, "percent_branches_covered": 71.42857142857143, "percent_branches_covered_display": "71"}, "missing_lines": [123, 127, 155, 168], "excluded_lines": [], "start_line": 108, "executed_branches": [[122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[122, 123], [126, 127], [154, 155], [167, 168]]}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 32, 46, 47, 48, 49, 52, 108], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"BitemporalAudit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 46, 47, 48, 49, 52, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 81, 82, 83, 84, 103, 105, 108, 122, 124, 125, 126, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180], "summary": {"covered_lines": 93, "num_statements": 113, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 82.30088495575221, "percent_statements_covered_display": "82", "num_branches": 48, "num_partial_branches": 13, "covered_branches": 33, "missing_branches": 15, "percent_branches_covered": 68.75, "percent_branches_covered_display": "69"}, "missing_lines": [20, 26, 34, 41, 64, 72, 75, 85, 86, 87, 88, 89, 95, 101, 102, 104, 123, 127, 155, 168], "excluded_lines": [], "start_line": 1, "executed_branches": [[19, 21], [21, 22], [21, 23], [24, 25], [24, 27], [25, 29], [27, 28], [27, 29], [33, 35], [36, 37], [36, 43], [37, 38], [37, 42], [38, 39], [63, 65], [71, 73], [74, 77], [80, 81], [80, 103], [83, 80], [83, 84], [84, 83], [103, 105], [122, 124], [126, 128], [154, 157], [158, 159], [158, 180], [160, 161], [160, 162], [167, 169], [170, 171], [170, 175]], "missing_branches": [[19, 20], [25, 26], [33, 34], [38, 41], [63, 64], [71, 72], [74, 75], [84, 85], [101, 84], [101, 102], [103, 104], [122, 123], [126, 127], [154, 155], [167, 168]]}}}, "src\\quant_data_kit\\validate.py": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]], "functions": {"validate_price_frame": {"executed_lines": [21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57], "summary": {"covered_lines": 18, "num_statements": 25, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 72.0, "percent_statements_covered_display": "72", "num_branches": 18, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 8, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55], "excluded_lines": [], "start_line": 14, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55]]}, "validate_calendar_coverage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 8, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": [[74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}, "": {"executed_lines": [3, 5, 7, 9, 11, 14, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [3, 5, 7, 9, 11, 14, 21, 22, 23, 25, 28, 29, 30, 33, 38, 41, 42, 44, 46, 47, 50, 53, 54, 57, 65], "summary": {"covered_lines": 25, "num_statements": 48, "percent_covered": 47.2972972972973, "percent_covered_display": "47", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 52.083333333333336, "percent_statements_covered_display": "52", "num_branches": 26, "num_partial_branches": 8, "covered_branches": 10, "missing_branches": 16, "percent_branches_covered": 38.46153846153846, "percent_branches_covered_display": "38"}, "missing_lines": [26, 31, 39, 43, 45, 51, 55, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 93, 94, 95, 96, 100], "excluded_lines": [], "start_line": 1, "executed_branches": [[22, 23], [22, 25], [25, 28], [30, 33], [38, 41], [42, 44], [44, 46], [46, 47], [50, 53], [54, 57]], "missing_branches": [[25, 26], [30, 31], [38, 39], [42, 43], [44, 45], [46, 53], [50, 51], [54, 55], [74, 75], [74, 76], [77, 78], [77, 79], [80, 81], [80, 93], [95, 96], [95, 100]]}}}, "tests\\__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_adapters_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": [], "functions": {"load_messages": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "binance_adapter": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "okx_adapter": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "cn_adapter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75, "executed_branches": [], "missing_branches": []}, "test_crypto_fixture_adapters_cover_required_events_and_replay_l2": {"executed_lines": [111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "test_binance_and_okx_map_to_same_stable_instrument_ids": {"executed_lines": [142, 143, 144, 145, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_crypto_fixtures_enter_normalized_layer_without_quarantine": {"executed_lines": [155, 159, 160, 169, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154, "executed_branches": [[155, -154], [155, 159]], "missing_branches": []}, "test_domestic_neutral_fixture_is_explicitly_not_market_data_certified": {"executed_lines": [183, 184, 185, 186, 190, 191, 192, 193], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182, "executed_branches": [], "missing_branches": []}, "test_domestic_neutral_adapter_rejects_market_certification_claim": {"executed_lines": [200, 201, 202, 203], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_provider_sequence_gap_is_rejected_before_v2_emission": {"executed_lines": [207, 208, 209, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_binance_update_range_and_okx_trade_side_are_strict": {"executed_lines": [214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213, "executed_branches": [], "missing_branches": []}, "test_book_sequence_state_rolls_back_after_snapshot_and_delta_conversion_failure": {"executed_lines": [225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224, "executed_branches": [], "missing_branches": []}, "test_okx_legacy_fixture_crc32_fails_closed_and_corrected_messages_are_retryable": {"executed_lines": [242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_okx_current_checksum_zero_and_equal_sequence_heartbeat_contract": {"executed_lines": [264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "test_okx_maintenance_reset_poison_survives_transaction_until_fresh_snapshot": {"executed_lines": [292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_fixture_index_hashes_are_exact": {"executed_lines": [323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[331, -322], [331, 332]], "missing_branches": []}, "test_adapter_context_time_and_sequence_primitives_fail_closed": {"executed_lines": [337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336, "executed_branches": [], "missing_branches": []}, "test_adapter_constructors_and_unknown_message_kinds_are_strict": {"executed_lines": [404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 45, 60, 75, 88, 105, 141, 154, 182, 199, 206, 213, 224, 241, 263, 291, 322, 336, 403], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 19, 25, 26, 27, 29, 30, 31, 32, 33, 34, 41, 42, 45, 46, 60, 61, 75, 76, 88, 105, 111, 112, 120, 121, 126, 127, 132, 133, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 154, 155, 159, 160, 169, 177, 178, 179, 182, 183, 184, 185, 186, 190, 191, 192, 193, 199, 200, 201, 202, 203, 206, 207, 208, 209, 210, 213, 214, 215, 216, 217, 218, 219, 220, 221, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 263, 264, 265, 266, 267, 269, 270, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 305, 306, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 358, 359, 368, 369, 370, 371, 372, 378, 379, 380, 381, 382, 383, 384, 385, 391, 392, 398, 399, 400, 403, 404, 405, 408, 409, 412, 413, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428], "summary": {"covered_lines": 215, "num_statements": 215, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[155, -154], [155, 159], [331, -322], [331, 332]], "missing_branches": []}}}, "tests\\test_benchmark_capture_v2.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 171, 172, 174, 175, 176, 177, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 145, "num_statements": 145, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[176, 177], [176, 179]], "missing_branches": [], "functions": {"test_dense_burst_fixture_has_frozen_depth_and_expected_row_density": {"executed_lines": [28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_sparse_fixture_is_retained_and_fixture_guards_fail_closed": {"executed_lines": [61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts": {"executed_lines": [81, 82, 83, 85, 89, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "test_epoch_group_is_fail_closed_and_preserves_per_journal_counts.accepted": {"executed_lines": [90, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches": {"executed_lines": [122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor.submit": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures": {"executed_lines": [169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.__init__": {"executed_lines": [171, 172], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate.submit": {"executed_lines": [175, 176, 177, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "test_benchmark_timing_excludes_only_post_report_worker_teardown": {"executed_lines": [206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 60, 78, 119, 168, 205], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_epoch_executor_and_journal_decode_negative_branches.ImmediateExecutor": {"executed_lines": [124, 125, 126, 127, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122, "executed_branches": [], "missing_branches": []}, "test_provider_batching_executor_propagates_results_and_failures.ImmediateDelegate": {"executed_lines": [171, 172, 175, 176, 177, 179, 180], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [[176, 177], [176, 179]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 27, 28, 29, 30, 31, 32, 34, 35, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 60, 61, 62, 63, 64, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 85, 89, 90, 91, 97, 98, 99, 100, 102, 103, 104, 105, 106, 108, 115, 116, 119, 122, 123, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 152, 153, 155, 156, 157, 158, 164, 165, 168, 169, 170, 174, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 199, 200, 201, 202, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 133, "num_statements": 133, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_benchmark_normalized_l2.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[14, -10], [14, 15]], "missing_branches": [], "functions": {"test_synthetic_l2_fixture_is_sequential_and_schema_valid": {"executed_lines": [11, 12, 13, 14, 15, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}, "test_small_benchmark_proves_end_to_end_determinism": {"executed_lines": [24, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 23], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 15, 20, 23, 24, 38, 39, 40], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[14, -10], [14, 15]], "missing_branches": []}}}, "tests\\test_capture_v2_collector_cli_transport.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 89, 90, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 114, 115, 116, 119, 120, 121, 123, 124, 125, 126, 129, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 523, 525, 526, 527, 529, 530, 531, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 623, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 640, 642, 643, 645, 646, 648, 649, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 671, 673, 674, 675, 678, 681, 682, 683, 684, 685, 687, 688, 690, 691, 692, 694, 695, 697, 699, 700, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 361, "num_statements": 364, "percent_covered": 98.67724867724868, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 99.17582417582418, "percent_statements_covered_display": "99", "num_branches": 14, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 2, "percent_branches_covered": 85.71428571428571, "percent_branches_covered_display": "86"}, "missing_lines": [86, 693, 696], "excluded_lines": [], "executed_branches": [[85, 87], [133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511], [692, 694], [694, 695], [694, 697]], "missing_branches": [[85, 86], [692, 693]], "functions": {"FakeClock.__init__": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [64, 65, 66], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [69, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68, "executed_branches": [], "missing_branches": []}, "FakeConnection.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "FakeConnection.send": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80, "executed_branches": [], "missing_branches": []}, "FakeConnection.receive": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 83, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnection.close": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89, "executed_branches": [], "missing_branches": []}, "FakeConnector.__init__": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94, "executed_branches": [], "missing_branches": []}, "FakeConnector.connect": {"executed_lines": [101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100, "executed_branches": [], "missing_branches": []}, "FailedConnector.__init__": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "FailedConnector.connect": {"executed_lines": [115, 116], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "FakeHttp.__init__": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120, "executed_branches": [], "missing_branches": []}, "FakeHttp.get": {"executed_lines": [124, 125, 126, 129], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "messages_for": {"executed_lines": [133, 134, 135, 136, 146, 147, 148, 149, 150], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148]], "missing_branches": []}, "roots": {"executed_lines": [195, 196, 197, 198, 199], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "distinct_identity": {"executed_lines": [203, 204], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": []}, "storage_guard": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207, "executed_branches": [], "missing_branches": []}, "config": {"executed_lines": [220, 221, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "test_full_eight_stream_bounded_probe_archives_and_normalizes": {"executed_lines": [243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242, "executed_branches": [], "missing_branches": []}, "test_preflight_same_physical_volume_pauses_without_network": {"executed_lines": [301, 302, 303, 304, 305, 319, 320, 321, 322, 323], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [], "missing_branches": []}, "test_connect_failures_use_bounded_retry_and_end_paused": {"executed_lines": [327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted": {"executed_lines": [363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive.archive_segment": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_cli_config_rejects_credentials_unknowns_and_defaults_to_safe_preflight": {"executed_lines": [402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398, "executed_branches": [], "missing_branches": []}, "test_cli_run_requires_confirmation_and_probe_bound": {"executed_lines": [438, 439, 440, 451, 452, 453, 454], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes": {"executed_lines": [460, 462, 463, 471, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [[495, 496], [495, 511]], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.write": {"executed_lines": [472, 473, 474], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.__init__": {"executed_lines": [523], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.preflight_only": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator.run": {"executed_lines": [530, 531], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "test_runner_fail_closed_internal_guards_and_raw_metadata": {"executed_lines": [544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage": {"executed_lines": [594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive.archive_segment": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors": {"executed_lines": [632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 631, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__enter__": {"executed_lines": [640], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 639, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.__exit__": {"executed_lines": [643], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 642, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.read": {"executed_lines": [646], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 645, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response.geturl": {"executed_lines": [649], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 648, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.failed": {"executed_lines": [656], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 655, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse.geturl": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls": {"executed_lines": [681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 721, 722, 724, 727, 728, 729], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.__init__": {"executed_lines": [683, 684, 685], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 682, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.send": {"executed_lines": [688], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 687, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.recv": {"executed_lines": [691, 692, 694, 695, 697], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 690, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying.close": {"executed_lines": [700], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 699, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connected": {"executed_lines": [719], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.connection_failure": {"executed_lines": [725], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 194, 202, 207, 219, 242, 300, 326, 362, 398, 437, 457, 543, 591, 631, 678], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [60, 61, 64, 65, 66, 69, 70], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "FakeConnection": {"executed_lines": [75, 76, 77, 78, 81, 84, 85, 87, 90], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [86], "excluded_lines": [], "start_line": 73, "executed_branches": [[85, 87]], "missing_branches": [[85, 86]]}, "FakeConnector": {"executed_lines": [95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "FailedConnector": {"executed_lines": [112, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "FakeHttp": {"executed_lines": [121, 124, 125, 126, 129], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119, "executed_branches": [], "missing_branches": []}, "test_archive_failure_pauses_stream_and_is_not_silently_counted.FailedArchive": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515, "executed_branches": [], "missing_branches": []}, "test_cli_nested_guards_custom_streams_and_success_modes.FakeCoordinator": {"executed_lines": [523, 526, 527, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 521, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedReceipt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617, "executed_branches": [], "missing_branches": []}, "test_unverified_archive_receipt_pauses_before_lineage.UnverifiedArchive": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.Response": {"executed_lines": [640, 643, 646, 649], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.BadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662, "executed_branches": [], "missing_branches": []}, "test_urllib_http_client_preserves_bytes_tls_and_errors.DowngradedResponse": {"executed_lines": [671], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 669, "executed_branches": [], "missing_branches": []}, "test_websocket_transport_wrapper_bytes_text_timeout_and_tls.Underlying": {"executed_lines": [683, 684, 685, 688, 691, 692, 694, 695, 697, 700], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [693, 696], "excluded_lines": [], "start_line": 681, "executed_branches": [[692, 694], [694, 695], [694, 697]], "missing_branches": [[692, 693]]}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 20, 31, 38, 39, 45, 46, 48, 49, 50, 51, 58, 59, 63, 68, 73, 74, 80, 83, 89, 93, 94, 100, 110, 111, 114, 119, 120, 123, 132, 133, 134, 135, 136, 146, 147, 148, 149, 150, 194, 195, 196, 197, 198, 199, 202, 203, 204, 207, 208, 219, 220, 221, 222, 242, 243, 244, 245, 246, 247, 254, 264, 265, 266, 267, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 300, 301, 302, 303, 304, 305, 319, 320, 321, 322, 323, 326, 327, 328, 329, 330, 331, 338, 339, 340, 353, 354, 355, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 371, 378, 379, 392, 393, 394, 395, 398, 402, 403, 404, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 451, 452, 453, 454, 457, 460, 462, 463, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, 494, 495, 496, 511, 512, 514, 515, 516, 517, 519, 521, 522, 525, 529, 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, 545, 546, 553, 554, 555, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 588, 591, 594, 595, 596, 602, 616, 617, 618, 619, 621, 622, 625, 626, 627, 628, 631, 632, 633, 634, 636, 637, 639, 642, 645, 648, 651, 652, 653, 655, 656, 658, 659, 660, 662, 663, 665, 666, 667, 669, 670, 673, 674, 675, 678, 681, 682, 687, 690, 699, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 714, 715, 716, 718, 719, 721, 722, 724, 725, 727, 728, 729], "summary": {"covered_lines": 304, "num_statements": 304, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[133, 134], [133, 150], [135, 136], [135, 149], [146, 147], [146, 148], [495, 496], [495, 511]], "missing_branches": []}}}, "tests\\test_capture_v2_models_storage.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 56, 57, 59, 60, 61, 62, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 606, 608, 609, 610, 612, 613, 614, 615, 616, 618, 619, 620, 622, 623, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 365, "num_statements": 367, "percent_covered": 99.46949602122015, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.4550408719346, "percent_statements_covered_display": "99", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": [], "functions": {"FakeClock.__init__": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": []}, "FakeClock.now": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "FakeClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "identities": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "guard": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "raw_frame": {"executed_lines": [93, 94], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [], "missing_branches": []}, "storage_roots": {"executed_lines": [112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111, "executed_branches": [], "missing_branches": []}, "test_default_scope_is_exact_sorted_and_credential_free": {"executed_lines": [122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_scope_config_stream_and_retry_guards": {"executed_lines": [147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184]], "missing_branches": []}, "test_symbol_mapping_resolution_is_effective_and_point_in_time": {"executed_lines": [201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200, "executed_branches": [], "missing_branches": []}, "test_raw_frame_round_trip_and_monotonic_clock": {"executed_lines": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure": {"executed_lines": [265, 266, 267, 268, 270, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 304, 312, 313, 314, 315, 316], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.persist": {"executed_lines": [271, 272], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270, "executed_branches": [], "missing_branches": []}, "test_state_machine_audits_legal_illegal_and_sink_failure.failed_sink": {"executed_lines": [299, 300, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [[300, 301], [300, 302]], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths": {"executed_lines": [322, 323, 324, 325, 327, 332, 334, 335, 337, 340, 341, 343, 346, 347, 349, 352, 353, 356, 357], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.low_archive": {"executed_lines": [338], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_identity": {"executed_lines": [344], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_storage_preflight_requires_distinct_physical_capacity_and_existing_paths.failed_capacity": {"executed_lines": [350], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_segment_rotation_restore_and_no_cleanup": {"executed_lines": [361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360, "executed_branches": [], "missing_branches": []}, "test_segment_time_rotation_identity_order_and_capacity_fail_closed": {"executed_lines": [404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause": {"executed_lines": [445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 480, 481, 482, 483], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": []}, "test_archive_missing_restore_and_hash_failure_pause.wrong_restore_hash": {"executed_lines": [476, 477, 478], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475, "executed_branches": [[476, 477], [476, 478]], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths": {"executed_lines": [489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 544, 545, 546, 547], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486, "executed_branches": [], "missing_branches": []}, "test_storage_negative_capacity_rotation_and_immutable_paths.link_failed": {"executed_lines": [542], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed": {"executed_lines": [553, 555, 556, 557, 558, 560, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550, "executed_branches": [], "missing_branches": []}, "test_archive_preflight_mismatch_and_raw_segment_line_fail_closed.wrong_preflight_hash": {"executed_lines": [561, 562, 563], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 560, "executed_branches": [[561, 562], [561, 563]], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed": {"executed_lines": [597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 632, 633, 639, 640, 642, 648, 649, 651, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.__init__": {"executed_lines": [606], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath.resolve": {"executed_lines": [609, 610], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 608, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__init__": {"executed_lines": [620], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 619, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub.__call__": {"executed_lines": [623], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.kernel": {"executed_lines": [626], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response": {"executed_lines": [652, 666], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 651, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.device_response.respond": {"executed_lines": [662, 663, 664], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 74, 86, 111, 121, 146, 200, 233, 264, 319, 360, 403, 442, 486, 550, 594], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"FakeClock": {"executed_lines": [56, 57, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 66], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.FakePath": {"executed_lines": [606, 609, 610], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_physical_volume_probe_failures_and_symlink_are_fail_closed.CallableStub": {"executed_lines": [620, 623], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 618, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 31, 40, 41, 42, 44, 45, 46, 51, 54, 55, 59, 64, 69, 70, 71, 74, 75, 86, 93, 94, 111, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 127, 128, 129, 130, 134, 135, 142, 143, 146, 147, 148, 149, 150, 151, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 200, 201, 202, 203, 204, 213, 214, 215, 222, 223, 226, 227, 228, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 271, 272, 274, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 297, 299, 300, 301, 302, 304, 312, 313, 314, 315, 316, 319, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 340, 341, 343, 344, 346, 347, 349, 350, 352, 353, 356, 357, 360, 361, 362, 363, 364, 371, 372, 373, 375, 376, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 416, 417, 418, 419, 420, 421, 422, 424, 429, 438, 439, 442, 445, 446, 447, 453, 454, 456, 457, 458, 467, 468, 469, 471, 473, 475, 476, 477, 478, 480, 481, 482, 483, 486, 489, 491, 492, 494, 503, 504, 506, 507, 512, 513, 515, 516, 525, 526, 529, 530, 531, 533, 534, 535, 536, 537, 539, 541, 542, 544, 545, 546, 547, 550, 553, 555, 556, 557, 558, 560, 561, 562, 563, 565, 566, 567, 569, 570, 571, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 594, 597, 598, 600, 602, 603, 605, 608, 612, 613, 614, 615, 616, 618, 619, 622, 625, 626, 632, 633, 639, 640, 642, 648, 649, 651, 652, 662, 663, 664, 666, 668, 674, 675, 677, 683, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694], "summary": {"covered_lines": 355, "num_statements": 355, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 10, "num_partial_branches": 0, "covered_branches": 10, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[169, 175], [169, 177], [180, 181], [180, 184], [300, 301], [300, 302], [476, 477], [476, 478], [561, 562], [561, 563]], "missing_branches": []}}}, "tests\\test_capture_v2_remediation.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 107, 108, 111, 112, 113, 114, 115, 118, 121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 153, 154, 156, 157, 158, 160, 161, 162, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 207, 208, 209, 211, 213, 214, 216, 217, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264, 267, 268, 271, 274, 276, 280, 289, 290, 293, 296, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354, 365, 368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394, 397, 398, 399, 400, 403, 413, 414, 422, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 449, 452, 453, 454, 455, 460, 461, 472, 473, 474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536, 539, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 560, 561, 562, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 595, 598, 599, 600, 602, 604, 605, 606, 607, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 631, 632, 633, 635, 636, 639, 640, 641, 644, 645, 646, 647, 663, 664, 665, 668, 669, 670, 671, 672, 674, 675, 676, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 705, 708, 709, 711, 712, 713, 714, 715, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751, 754, 755, 756, 757, 758, 764, 766, 767, 768, 769, 774, 775, 776, 777, 779, 792, 793, 794, 795, 796, 799, 800, 801, 806, 807, 813, 815, 816, 818, 819, 820, 821, 822, 823, 826, 828, 829, 830, 832, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 864, 867, 868, 869, 876, 877, 878, 879, 881, 882, 883, 885, 886, 889, 890, 892, 894, 904, 905, 906, 907, 908, 909, 910, 911, 914, 917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945, 948, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 980, 981, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1022, 1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1091, 1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1158, 1159, 1160, 1161, 1162, 1168, 1169, 1184, 1187, 1188, 1189, 1196, 1197, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221, 1224, 1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311, 1314, 1317, 1318, 1319, 1320, 1321, 1328, 1329, 1330, 1331, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1362, 1363, 1365, 1374, 1375, 1376, 1377, 1378, 1379, 1381, 1382, 1383, 1384, 1385, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1411, 1412, 1413, 1416, 1423, 1426, 1427, 1428, 1435, 1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450, 1457, 1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483, 1498, 1508, 1511, 1512, 1513, 1516, 1521, 1522, 1530, 1533, 1534, 1535, 1538, 1543, 1557, 1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574, 1582, 1583, 1584, 1585, 1586, 1590, 1591, 1592, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1611, 1612, 1613, 1614, 1620, 1621, 1629, 1641, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1664, 1665, 1667, 1668, 1669, 1670, 1672, 1674, 1675, 1683, 1684, 1685, 1686, 1687, 1691, 1701, 1702, 1703, 1704, 1705, 1707, 1708, 1711, 1714, 1715, 1725, 1726, 1732, 1733, 1739, 1740, 1746, 1747, 1755, 1756, 1757, 1758, 1759, 1762, 1763, 1764, 1777, 1782, 1783, 1790, 1791, 1792, 1793, 1802, 1803, 1804, 1805, 1820, 1823, 1824, 1825, 1832, 1833, 1834, 1835, 1842, 1843, 1844, 1845, 1854, 1855, 1856, 1864, 1878, 1881, 1882, 1883, 1884, 1885, 1894, 1895, 1903, 1927, 1930, 1931, 1932, 1933, 1934, 1935, 1944, 1945, 1953, 1974, 1977, 1978, 1979, 1980, 1989, 1990, 1991, 1992, 2001, 2002, 2010, 2025, 2028, 2029, 2030, 2031, 2040, 2041, 2049, 2052, 2053, 2054, 2055, 2065, 2066, 2067, 2068, 2078, 2079, 2080, 2081, 2091, 2092, 2093, 2094, 2095, 2096, 2101, 2102, 2103, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2129, 2130, 2137, 2138, 2139, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2159, 2160, 2161, 2164, 2165, 2166, 2167, 2170, 2171, 2172, 2173, 2174, 2175, 2186, 2189, 2190, 2191, 2192, 2193, 2203, 2204, 2205, 2206, 2216, 2217, 2218, 2219, 2220, 2230, 2231, 2232, 2233, 2243, 2244, 2245, 2246, 2257, 2260, 2261, 2263, 2264, 2265, 2266, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2282, 2285, 2286, 2287, 2288, 2297, 2298, 2303, 2304, 2305, 2306, 2307, 2308, 2311, 2312, 2313, 2314, 2315, 2316, 2318, 2319, 2321, 2322, 2323, 2325, 2326, 2327, 2328, 2329, 2331, 2340, 2341, 2342, 2343, 2344, 2346, 2347, 2356, 2357, 2358, 2360, 2361, 2362, 2364, 2365, 2367, 2368, 2369, 2370, 2371, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2384, 2385, 2387, 2389, 2390, 2391, 2393, 2394, 2395, 2396, 2399, 2402, 2403, 2412, 2414, 2415, 2417, 2418, 2421, 2422, 2423, 2425, 2426, 2427, 2428, 2429, 2430, 2432, 2433, 2434, 2435, 2436], "summary": {"covered_lines": 1054, "num_statements": 1081, "percent_covered": 97.34278122232064, "percent_covered_display": "97", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 97.5023126734505, "percent_statements_covered_display": "98", "num_branches": 48, "num_partial_branches": 3, "covered_branches": 45, "missing_branches": 3, "percent_branches_covered": 93.75, "percent_branches_covered_display": "94"}, "missing_lines": [55, 56, 57, 58, 59, 61, 65, 67, 68, 69, 71, 74, 75, 109, 189, 190, 277, 278, 487, 525, 526, 824, 887, 982, 1207, 1264, 2419], "excluded_lines": [], "executed_branches": [[100, 101], [100, 104], [107, 108], [193, 194], [193, 195], [303, 304], [303, 305], [486, 488], [560, 561], [560, 562], [604, 605], [604, 607], [631, 632], [631, 633], [663, -644], [663, 664], [693, 694], [693, 695], [696, 697], [696, 699], [713, 714], [713, 715], [820, 821], [820, 822], [878, 879], [878, 881], [980, 981], [1329, 1330], [1329, 1331], [1597, 1598], [1597, 1603], [1599, 1600], [1599, 1602], [1647, 1648], [1647, 1652], [1652, 1653], [1652, 1667], [1668, 1669], [1668, 1672], [2117, 2118], [2117, 2119], [2265, -2263], [2265, 2266], [2327, 2328], [2327, 2329]], "missing_branches": [[107, 109], [486, 487], [980, 982]], "functions": {"_process_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [55, 56, 57, 58, 59, 61], "excluded_lines": [], "start_line": 48, "executed_branches": [], "missing_branches": []}, "_process_crash_after_epoch_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [65, 67, 71, 74, 75], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_process_crash_after_epoch_snapshot.terminate_after_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [68, 69], "excluded_lines": [], "start_line": 67, "executed_branches": [], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads": {"executed_lines": [79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 111, 112, 113, 114, 115], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [[100, 101], [100, 104]], "missing_branches": []}, "test_durable_audit_commits_before_state_and_reloads.fail_after_initial": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [109], "excluded_lines": [], "start_line": 106, "executed_branches": [[107, 108]], "missing_branches": [[107, 109]]}, "test_illegal_transition_is_durable_and_failed_illegal_audit_is_not_counted": {"executed_lines": [121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes": {"executed_lines": [153, 154, 156, 160, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150, "executed_branches": [[193, 194], [193, 195]], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.capacity": {"executed_lines": [157, 158], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.tree": {"executed_lines": [161, 162], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160, "executed_branches": [], "missing_branches": []}, "test_default_hot_path_amortizes_tree_capacity_and_fsync_probes.counted_fsync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [189, 190], "excluded_lines": [], "start_line": 188, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches": {"executed_lines": [207, 208, 209, 211, 216, 217, 226, 227, 228, 229, 230], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204, "executed_branches": [], "missing_branches": []}, "test_normalized_append_uses_bounded_fsync_batches.counted": {"executed_lines": [213, 214], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211, "executed_branches": [], "missing_branches": []}, "_journal_with_lineage": {"executed_lines": [234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [], "missing_branches": []}, "_identity_anchor": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267, "executed_branches": [], "missing_branches": []}, "_existing_epoch_storage": {"executed_lines": [274, 276, 280, 289, 290], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [], "missing_branches": []}, "_existing_epoch_storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [277, 278], "excluded_lines": [], "start_line": 276, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries": {"executed_lines": [296, 297, 298, 300, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293, "executed_branches": [], "missing_branches": []}, "test_normalized_finalize_publish_failure_retains_journal_and_retries.fail_once": {"executed_lines": [302, 303, 304, 305], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300, "executed_branches": [[303, 304], [303, 305]], "missing_branches": []}, "test_normalized_crash_after_publish_reconciles_prepared_transaction": {"executed_lines": [321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320, "executed_branches": [], "missing_branches": []}, "test_reconciliation_binds_aborts_to_their_prepared_attempt": {"executed_lines": [368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365, "executed_branches": [], "missing_branches": []}, "test_reconciliation_rejects_conflicting_terminal_states": {"executed_lines": [398, 399, 400, 403, 413, 414], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [], "missing_branches": []}, "test_pending_transaction_rejects_mutation_and_malformed_time": {"executed_lines": [425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_reparse_journal_parent": {"executed_lines": [452, 453, 454, 455, 460, 461], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449, "executed_branches": [], "missing_branches": []}, "test_epoch_creation_rejects_real_windows_junction": {"executed_lines": [474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [487], "excluded_lines": [], "start_line": 473, "executed_branches": [[486, 488]], "missing_branches": [[486, 487]]}, "test_bootstrap_lock_rejects_real_windows_junction_before_lock_open": {"executed_lines": [508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 505, "executed_branches": [], "missing_branches": []}, "test_bootstrap_lock_rejects_real_windows_junction_before_lock_open.must_not_open_lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [525, 526], "excluded_lines": [], "start_line": 523, "executed_branches": [], "missing_branches": []}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed": {"executed_lines": [542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 539, "executed_branches": [], "missing_branches": []}, "test_epoch_journal_helpers_and_reconcile_shapes_fail_closed.fail_after_open": {"executed_lines": [560, 561, 562], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 559, "executed_branches": [[560, 561], [560, 562]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery": {"executed_lines": [598, 599, 600, 602, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 635, 636, 639, 640, 641], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 595, "executed_branches": [], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.receipt_fails_once": {"executed_lines": [604, 605, 606, 607], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [[604, 605], [604, 607]], "missing_branches": []}, "test_normalized_receipt_failure_abort_failure_and_process_recovery.failure_record_fails": {"executed_lines": [631, 632, 633], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[631, 632], [631, 633]], "missing_branches": []}, "test_frozen_scope_rejects_fake_duplicate_crosswire_and_wrong_domains": {"executed_lines": [645, 646, 647, 663, 664, 665], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644, "executed_branches": [[663, -644], [663, 664]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe": {"executed_lines": [669, 670, 671, 672, 674, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668, "executed_branches": [[693, 694], [693, 695], [696, 697], [696, 699]], "missing_branches": []}, "test_atomic_immutable_publish_is_thread_and_process_race_safe.publish_same": {"executed_lines": [675, 676], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 674, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent": {"executed_lines": [708, 709, 711, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "test_archive_rejects_identity_change_and_reparse_final_parent.identity": {"executed_lines": [712, 713, 714, 715], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 711, "executed_branches": [[713, 714], [713, 715]], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot": {"executed_lines": [755, 756, 757, 758, 764, 766, 767, 774, 775, 779, 792, 793, 794, 795, 796], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 754, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection.__init__": {"executed_lines": [768, 769], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 767, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector.connect": {"executed_lines": [776, 777], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 775, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused": {"executed_lines": [800, 801, 806, 807, 813, 815, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 799, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise": {"executed_lines": [816, 818, 819, 826, 828, 829, 832, 845, 846, 847, 848, 849, 850], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 815, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection.receive": {"executed_lines": [820, 821, 822, 823], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [824], "excluded_lines": [], "start_line": 819, "executed_branches": [[820, 821], [820, 822]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector.connect": {"executed_lines": [830], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures": {"executed_lines": [867, 868, 869, 876, 877, 894, 904, 905, 906, 907, 908, 909, 910, 911], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 864, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect": {"executed_lines": [878, 879, 881, 882, 885, 889, 892], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 877, "executed_branches": [[878, 879], [878, 881]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.send": {"executed_lines": [883], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 882, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.receive": {"executed_lines": [886], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [887], "excluded_lines": [], "start_line": 885, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked.close": {"executed_lines": [890], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 889, "executed_branches": [], "missing_branches": []}, "test_preflight_report_uses_honest_zero_audit_and_report_publish_fails_closed": {"executed_lines": [917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 914, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches": {"executed_lines": [951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 948, "executed_branches": [], "missing_branches": []}, "test_storage_guard_path_audit_and_incremental_negative_branches.wrong_staging_hash": {"executed_lines": [980, 981], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [982], "excluded_lines": [], "start_line": 979, "executed_branches": [[980, 981]], "missing_branches": [[980, 982]]}, "test_storage_ack_reload_identity_and_restore_parent_fail_closed": {"executed_lines": [1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1022, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_and_abort_negative_branches": {"executed_lines": [1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1091, "executed_branches": [], "missing_branches": []}, "_runner_for_negative_test": {"executed_lines": [1159, 1160, 1161, 1162, 1168, 1169], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1158, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails": {"executed_lines": [1187, 1188, 1189, 1196, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1184, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.fail_reconciliation": {"executed_lines": [1197], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1196, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1207], "excluded_lines": [], "start_line": 1206, "executed_branches": [], "missing_branches": []}, "test_coordinator_reports_reconciled_epoch_before_network": {"executed_lines": [1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1224, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards": {"executed_lines": [1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1256, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1264], "excluded_lines": [], "start_line": 1263, "executed_branches": [], "missing_branches": []}, "test_runner_audit_failure_and_coordinator_run_preflight_failure": {"executed_lines": [1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1282, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight": {"executed_lines": [1317, 1318, 1319, 1320, 1321, 1328, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1365, 1374, 1381, 1382, 1383, 1384, 1385, 1386], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1314, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.unhandled": {"executed_lines": [1329, 1330, 1331], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1328, "executed_branches": [[1329, 1330], [1329, 1331]], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector.connect": {"executed_lines": [1362, 1363], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1361, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.cancel_outer": {"executed_lines": [1375, 1376, 1377, 1378, 1379], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1374, "executed_branches": [], "missing_branches": []}, "_failed_epoch_for_recovery": {"executed_lines": [1390, 1391, 1392, 1393, 1394, 1395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1389, "executed_branches": [], "missing_branches": []}, "_rewrite_content_addressed": {"executed_lines": [1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1398, "executed_branches": [], "missing_branches": []}, "_rewrite_failure": {"executed_lines": [1412, 1413], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1411, "executed_branches": [], "missing_branches": []}, "test_epoch_raw_lineage_rejects_non_list_and_malformed_entries": {"executed_lines": [1426, 1427, 1428], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1423, "executed_branches": [], "missing_branches": []}, "test_epoch_raw_lineage_rejects_duplicates_and_untrusted_objects": {"executed_lines": [1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1435, "executed_branches": [], "missing_branches": []}, "test_epoch_binding_rejects_noncanonical_time_and_missing_raw_lineage": {"executed_lines": [1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1457, "executed_branches": [], "missing_branches": []}, "test_epoch_snapshot_binding_rejects_malformed_and_mismatched_state": {"executed_lines": [1511, 1512, 1513, 1516, 1521, 1522], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1508, "executed_branches": [], "missing_branches": []}, "test_epoch_snapshot_binding_allows_zero_accepted_rows_without_snapshot": {"executed_lines": [1533, 1534, 1535, 1538, 1543], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1530, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_prepared_filename_attempt_mismatch": {"executed_lines": [1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1557, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_cannot_rebind_a_different_valid_snapshot": {"executed_lines": [1583, 1584, 1585, 1586, 1590, 1591, 1592, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1611, 1612, 1613, 1614, 1620, 1621], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1582, "executed_branches": [[1597, 1598], [1597, 1603], [1599, 1600], [1599, 1602]], "missing_branches": []}, "test_epoch_terminal_json_contracts_are_closed_and_strict": {"executed_lines": [1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1664, 1665, 1667, 1668, 1669, 1670, 1672, 1674, 1675], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1641, "executed_branches": [[1647, 1648], [1647, 1652], [1652, 1653], [1652, 1667], [1668, 1669], [1668, 1672]], "missing_branches": []}, "test_epoch_binding_helper_negative_branches_are_explicit": {"executed_lines": [1684, 1685, 1686, 1687, 1691, 1701, 1702, 1703, 1704, 1705, 1707, 1708, 1711, 1714, 1715, 1725, 1726, 1732, 1733, 1739, 1740, 1746, 1747], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1683, "executed_branches": [], "missing_branches": []}, "test_epoch_terminal_specific_types_and_required_journal_binding": {"executed_lines": [1756, 1757, 1758, 1759, 1762, 1763, 1764, 1777, 1782, 1783, 1790, 1791, 1792, 1793, 1802, 1803, 1804, 1805], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1755, "executed_branches": [], "missing_branches": []}, "test_epoch_reconcile_rejects_missing_anchor_open_part_and_orphan_journal": {"executed_lines": [1823, 1824, 1825, 1832, 1833, 1834, 1835, 1842, 1843, 1844, 1845, 1854, 1855, 1856], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1820, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_prepared_identity_field": {"executed_lines": [1881, 1882, 1883, 1884, 1885, 1894, 1895], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1878, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_committed_identity_field": {"executed_lines": [1930, 1931, 1932, 1933, 1934, 1935, 1944, 1945], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1927, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_explicit_abort_identity_field": {"executed_lines": [1977, 1978, 1979, 1980, 1989, 1990, 1991, 1992, 2001, 2002], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1974, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_each_failure_schema_and_type_field": {"executed_lines": [2028, 2029, 2030, 2031, 2040, 2041], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2025, "executed_branches": [], "missing_branches": []}, "test_epoch_recovery_rejects_failure_lineage_reference_and_filename": {"executed_lines": [2052, 2053, 2054, 2055, 2065, 2066, 2067, 2068, 2078, 2079, 2080, 2081, 2091, 2092, 2093, 2094, 2095, 2096, 2101, 2102, 2103], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2049, "executed_branches": [], "missing_branches": []}, "test_epoch_legacy_failure_and_pending_manifest_negative_paths": {"executed_lines": [2115, 2116, 2117, 2118, 2119, 2120, 2129, 2130, 2137, 2138, 2139, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2159, 2160, 2161, 2164, 2165, 2166, 2167, 2170, 2171, 2172, 2173, 2174, 2175], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2114, "executed_branches": [[2117, 2118], [2117, 2119]], "missing_branches": []}, "test_epoch_recovery_rejects_identity_part_count_open_part_and_bad_flush": {"executed_lines": [2189, 2190, 2191, 2192, 2193, 2203, 2204, 2205, 2206, 2216, 2217, 2218, 2219, 2220, 2230, 2231, 2232, 2233, 2243, 2244, 2245, 2246], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2186, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable": {"executed_lines": [2260, 2261, 2263, 2268, 2269, 2270, 2271, 2272, 2273, 2274], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2257, "executed_branches": [], "missing_branches": []}, "test_epoch_receipt_reload_mismatch_is_audited_and_retryable.corrupt_receipt": {"executed_lines": [2264, 2265, 2266], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2263, "executed_branches": [[2265, -2263], [2265, 2266]], "missing_branches": []}, "test_epoch_abort_publish_failure_keeps_retryable_open_state": {"executed_lines": [2285, 2286, 2287, 2288, 2297, 2298, 2303, 2304, 2305, 2306, 2307, 2308], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2282, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge": {"executed_lines": [2312, 2313, 2314, 2315, 2316, 2318, 2319, 2321, 2322, 2325, 2331, 2340, 2341, 2342, 2343, 2344, 2346, 2347, 2356, 2357, 2358, 2360, 2361, 2364, 2367, 2368, 2369, 2370, 2371, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2387, 2389, 2390, 2393, 2394, 2395, 2396], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2311, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.__init__": {"executed_lines": [2323], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2322, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect.connect": {"executed_lines": [2326, 2327, 2328, 2329], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2325, "executed_branches": [[2327, 2328], [2327, 2329]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.__init__": {"executed_lines": [2362], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2361, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover.connect": {"executed_lines": [2365], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2364, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection.__init__": {"executed_lines": [2384, 2385], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2383, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector.connect": {"executed_lines": [2391], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2390, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report": {"executed_lines": [2402, 2403, 2412, 2414, 2432, 2433, 2434, 2435, 2436], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2399, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise": {"executed_lines": [2415, 2417, 2418, 2421, 2425, 2426, 2427, 2428, 2429, 2430], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2414, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [2419], "excluded_lines": [], "start_line": 2418, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock.sleep": {"executed_lines": [2422, 2423], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2421, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 118, 150, 204, 233, 267, 271, 293, 320, 365, 397, 422, 449, 472, 473, 504, 505, 539, 595, 644, 668, 705, 754, 799, 864, 914, 948, 1022, 1091, 1158, 1184, 1224, 1256, 1282, 1314, 1389, 1398, 1411, 1416, 1423, 1435, 1457, 1498, 1508, 1530, 1557, 1582, 1629, 1641, 1683, 1755, 1820, 1864, 1878, 1903, 1927, 1953, 1974, 2010, 2025, 2049, 2114, 2186, 2257, 2282, 2311, 2399], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_probe_budget_covers_okx_control_frames_without_snapshot.ControlOnlyConnection": {"executed_lines": [768, 769], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 766, "executed_branches": [], "missing_branches": []}, "test_probe_budget_covers_okx_control_frames_without_snapshot.Connector": {"executed_lines": [776, 777], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 774, "executed_branches": [], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.BlockingConnection": {"executed_lines": [820, 821, 822, 823], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [824], "excluded_lines": [], "start_line": 818, "executed_branches": [[820, 821], [820, 822]], "missing_branches": []}, "test_cancel_flushes_archives_aborts_and_persists_paused.exercise.Connector": {"executed_lines": [830], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 828, "executed_branches": [], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector": {"executed_lines": [878, 879, 881, 882, 885, 889, 892], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 876, "executed_branches": [[878, 879], [878, 881]], "missing_branches": []}, "test_coordinator_cancels_peer_streams_and_still_persists_eight_failures.MixedConnector.connect.Blocked": {"executed_lines": [883, 886, 890], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [887], "excluded_lines": [], "start_line": 881, "executed_branches": [], "missing_branches": []}, "test_coordinator_blocks_network_when_epoch_reconciliation_fails.NetworkMustNotStart": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1207], "excluded_lines": [], "start_line": 1205, "executed_branches": [], "missing_branches": []}, "test_collector_deadline_malformed_snapshot_and_internal_guards.NeverReceive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [1264], "excluded_lines": [], "start_line": 1262, "executed_branches": [], "missing_branches": []}, "test_coordinator_unhandled_stream_exception_and_outer_cancel_still_report_eight.BlockingConnector": {"executed_lines": [1362, 1363], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1360, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.FailThenConnect": {"executed_lines": [2323, 2326, 2327, 2328, 2329], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2321, "executed_branches": [[2327, 2328], [2327, 2329]], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.MalformedThenRecover": {"executed_lines": [2362, 2365], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2360, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnection": {"executed_lines": [2384, 2385], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2382, "executed_branches": [], "missing_branches": []}, "test_runner_prepaused_retry_success_and_binance_multiframe_bridge.BridgeConnector": {"executed_lines": [2391], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 2389, "executed_branches": [], "missing_branches": []}, "test_cancellation_during_retry_backoff_still_persists_terminal_report.exercise.BackoffClock": {"executed_lines": [2422, 2423], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [2419], "excluded_lines": [], "start_line": 2417, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 17, 18, 19, 20, 21, 33, 42, 43, 44, 45, 48, 64, 78, 79, 80, 81, 82, 83, 84, 91, 98, 99, 100, 101, 102, 104, 106, 107, 108, 111, 112, 113, 114, 115, 118, 121, 122, 123, 124, 125, 132, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 153, 154, 156, 157, 158, 160, 161, 162, 164, 173, 174, 175, 186, 188, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 207, 208, 209, 211, 213, 214, 216, 217, 226, 227, 228, 229, 230, 233, 234, 235, 236, 237, 246, 247, 248, 249, 250, 251, 252, 262, 263, 264, 267, 268, 271, 274, 276, 280, 289, 290, 293, 296, 297, 298, 300, 302, 303, 304, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 323, 327, 328, 329, 330, 332, 333, 334, 337, 338, 339, 340, 341, 342, 344, 350, 351, 352, 353, 354, 365, 368, 369, 370, 375, 376, 377, 378, 383, 384, 385, 386, 387, 388, 394, 397, 398, 399, 400, 403, 413, 414, 422, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 449, 452, 453, 454, 455, 460, 461, 472, 473, 474, 475, 476, 477, 478, 479, 480, 486, 488, 489, 490, 499, 501, 504, 505, 508, 509, 510, 511, 512, 513, 514, 520, 521, 523, 528, 529, 530, 531, 532, 533, 534, 536, 539, 542, 543, 544, 545, 547, 548, 549, 550, 551, 552, 553, 554, 556, 557, 559, 560, 561, 562, 564, 565, 566, 567, 569, 570, 571, 572, 573, 580, 581, 582, 583, 584, 585, 586, 587, 595, 598, 599, 600, 602, 604, 605, 606, 607, 609, 610, 611, 612, 613, 622, 623, 625, 626, 630, 631, 632, 633, 635, 636, 639, 640, 641, 644, 645, 646, 647, 663, 664, 665, 668, 669, 670, 671, 672, 674, 675, 676, 678, 679, 680, 682, 683, 684, 685, 686, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 705, 708, 709, 711, 712, 713, 714, 715, 717, 720, 726, 727, 736, 737, 738, 739, 740, 741, 743, 744, 745, 750, 751, 754, 755, 756, 757, 758, 764, 766, 767, 774, 775, 779, 792, 793, 794, 795, 796, 799, 800, 801, 806, 807, 813, 815, 816, 818, 819, 826, 828, 829, 832, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 864, 867, 868, 869, 876, 877, 894, 904, 905, 906, 907, 908, 909, 910, 911, 914, 917, 918, 919, 922, 934, 935, 936, 938, 943, 944, 945, 948, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, 970, 971, 972, 973, 974, 976, 977, 979, 980, 981, 984, 985, 986, 987, 989, 990, 997, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1022, 1025, 1026, 1027, 1036, 1037, 1039, 1040, 1047, 1056, 1061, 1062, 1064, 1070, 1071, 1076, 1077, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1091, 1094, 1095, 1096, 1097, 1106, 1107, 1108, 1109, 1110, 1111, 1121, 1122, 1123, 1124, 1134, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1158, 1159, 1160, 1161, 1162, 1168, 1169, 1184, 1187, 1188, 1189, 1196, 1197, 1199, 1205, 1206, 1209, 1217, 1218, 1219, 1220, 1221, 1224, 1227, 1228, 1229, 1235, 1240, 1241, 1251, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1262, 1263, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1297, 1309, 1310, 1311, 1314, 1317, 1318, 1319, 1320, 1321, 1328, 1329, 1330, 1331, 1333, 1334, 1341, 1342, 1343, 1345, 1346, 1347, 1348, 1349, 1352, 1358, 1360, 1361, 1365, 1374, 1375, 1376, 1377, 1378, 1379, 1381, 1382, 1383, 1384, 1385, 1386, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1411, 1412, 1413, 1416, 1423, 1426, 1427, 1428, 1435, 1436, 1437, 1440, 1441, 1442, 1448, 1449, 1450, 1457, 1460, 1461, 1464, 1467, 1469, 1470, 1471, 1472, 1482, 1483, 1498, 1508, 1511, 1512, 1513, 1516, 1521, 1522, 1530, 1533, 1534, 1535, 1538, 1543, 1557, 1558, 1559, 1560, 1561, 1563, 1564, 1573, 1574, 1582, 1583, 1584, 1585, 1586, 1590, 1591, 1592, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1611, 1612, 1613, 1614, 1620, 1621, 1629, 1641, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1664, 1665, 1667, 1668, 1669, 1670, 1672, 1674, 1675, 1683, 1684, 1685, 1686, 1687, 1691, 1701, 1702, 1703, 1704, 1705, 1707, 1708, 1711, 1714, 1715, 1725, 1726, 1732, 1733, 1739, 1740, 1746, 1747, 1755, 1756, 1757, 1758, 1759, 1762, 1763, 1764, 1777, 1782, 1783, 1790, 1791, 1792, 1793, 1802, 1803, 1804, 1805, 1820, 1823, 1824, 1825, 1832, 1833, 1834, 1835, 1842, 1843, 1844, 1845, 1854, 1855, 1856, 1864, 1878, 1881, 1882, 1883, 1884, 1885, 1894, 1895, 1903, 1927, 1930, 1931, 1932, 1933, 1934, 1935, 1944, 1945, 1953, 1974, 1977, 1978, 1979, 1980, 1989, 1990, 1991, 1992, 2001, 2002, 2010, 2025, 2028, 2029, 2030, 2031, 2040, 2041, 2049, 2052, 2053, 2054, 2055, 2065, 2066, 2067, 2068, 2078, 2079, 2080, 2081, 2091, 2092, 2093, 2094, 2095, 2096, 2101, 2102, 2103, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2129, 2130, 2137, 2138, 2139, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2159, 2160, 2161, 2164, 2165, 2166, 2167, 2170, 2171, 2172, 2173, 2174, 2175, 2186, 2189, 2190, 2191, 2192, 2193, 2203, 2204, 2205, 2206, 2216, 2217, 2218, 2219, 2220, 2230, 2231, 2232, 2233, 2243, 2244, 2245, 2246, 2257, 2260, 2261, 2263, 2264, 2265, 2266, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2282, 2285, 2286, 2287, 2288, 2297, 2298, 2303, 2304, 2305, 2306, 2307, 2308, 2311, 2312, 2313, 2314, 2315, 2316, 2318, 2319, 2321, 2322, 2325, 2331, 2340, 2341, 2342, 2343, 2344, 2346, 2347, 2356, 2357, 2358, 2360, 2361, 2364, 2367, 2368, 2369, 2370, 2371, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2382, 2383, 2387, 2389, 2390, 2393, 2394, 2395, 2396, 2399, 2402, 2403, 2412, 2414, 2415, 2417, 2418, 2421, 2425, 2426, 2427, 2428, 2429, 2430, 2432, 2433, 2434, 2435, 2436], "summary": {"covered_lines": 1021, "num_statements": 1043, "percent_covered": 97.6958525345622, "percent_covered_display": "98", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 97.89069990412273, "percent_statements_covered_display": "98", "num_branches": 42, "num_partial_branches": 3, "covered_branches": 39, "missing_branches": 3, "percent_branches_covered": 92.85714285714286, "percent_branches_covered_display": "93"}, "missing_lines": [55, 56, 57, 58, 59, 61, 65, 67, 68, 69, 71, 74, 75, 109, 189, 190, 277, 278, 487, 525, 526, 982], "excluded_lines": [], "start_line": 1, "executed_branches": [[100, 101], [100, 104], [107, 108], [193, 194], [193, 195], [303, 304], [303, 305], [486, 488], [560, 561], [560, 562], [604, 605], [604, 607], [631, 632], [631, 633], [663, -644], [663, 664], [693, 694], [693, 695], [696, 697], [696, 699], [713, 714], [713, 715], [980, 981], [1329, 1330], [1329, 1331], [1597, 1598], [1597, 1603], [1599, 1600], [1599, 1602], [1647, 1648], [1647, 1652], [1652, 1653], [1652, 1667], [1668, 1669], [1668, 1672], [2117, 2118], [2117, 2119], [2265, -2263], [2265, 2266]], "missing_branches": [[107, 109], [486, 487], [980, 982]]}}}, "tests\\test_capture_v2_synchronizers_epoch.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 369, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 260, "num_statements": 262, "percent_covered": 99.24812030075188, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23664122137404, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": [], "functions": {"stream": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45, "executed_branches": [], "missing_branches": []}, "resolver": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "frame": {"executed_lines": [59, 60, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58, "executed_branches": [], "missing_branches": []}, "binance_snapshot": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "binance_update": {"executed_lines": [87, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86, "executed_branches": [[97, 98], [97, 99]], "missing_branches": []}, "okx_message": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102, "executed_branches": [], "missing_branches": []}, "storage": {"executed_lines": [124, 125, 126, 128, 132, 141], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123, "executed_branches": [], "missing_branches": []}, "storage.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 128, "executed_branches": [], "missing_branches": []}, "test_binance_futures_snapshot_bridge_pu_chain_and_absent_delete_audit": {"executed_lines": [145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144, "executed_branches": [], "missing_branches": []}, "test_binance_spot_continuity_snapshot_lag_and_usdm_pu_fail_closed": {"executed_lines": [177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176, "executed_branches": [], "missing_branches": []}, "test_binance_snapshot_malformed_and_crossed": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208, "executed_branches": [], "missing_branches": []}, "test_binance_unexpected_messages_ranges_mapping_and_update_before_snapshot": {"executed_lines": [217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216, "executed_branches": [], "missing_branches": []}, "test_okx_snapshot_heartbeat_updates_deprecated_checksum_and_maintenance_reset": {"executed_lines": [237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236, "executed_branches": [], "missing_branches": []}, "test_okx_gap_heartbeat_levels_errors_and_envelope_guards": {"executed_lines": [280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279, "executed_branches": [], "missing_branches": []}, "test_binance_wire_and_book_negative_branches_are_fail_closed": {"executed_lines": [305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304, "executed_branches": [[341, 342], [341, 347]], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync": {"executed_lines": [367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366, "executed_branches": [], "missing_branches": []}, "test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver.resolve": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368, "executed_branches": [], "missing_branches": []}, "test_sequence_normalizer_no_change_branch_is_strict": {"executed_lines": [395, 396, 397, 400, 401, 402, 405, 406, 409, 410], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394, "executed_branches": [], "missing_branches": []}, "test_normalized_epoch_journal_publishes_complete_raw_lineage": {"executed_lines": [419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418, "executed_branches": [], "missing_branches": []}, "test_epoch_empty_abort_duplicate_lineage_and_missing_raw_are_visible": {"executed_lines": [461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "test_epoch_configuration_closed_abort_and_part_integrity_guards": {"executed_lines": [530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 53, 58, 78, 86, 102, 123, 144, 176, 201, 208, 216, 236, 279, 304, 366, 394, 418, 460, 529], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"test_mapping_disagreement_and_okx_non_object_item_require_resync.WrongResolver": {"executed_lines": [369], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 21, 27, 32, 33, 35, 36, 37, 38, 45, 46, 53, 54, 55, 58, 59, 60, 61, 78, 79, 86, 87, 97, 98, 99, 102, 103, 123, 124, 125, 126, 128, 132, 141, 144, 145, 146, 147, 148, 150, 151, 152, 161, 162, 163, 164, 166, 169, 170, 171, 172, 173, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 208, 209, 210, 211, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 236, 237, 238, 239, 245, 246, 257, 258, 259, 260, 261, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 295, 296, 297, 298, 299, 300, 301, 304, 305, 306, 307, 309, 310, 311, 313, 325, 327, 341, 342, 343, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 386, 387, 388, 389, 394, 395, 396, 397, 400, 401, 402, 405, 406, 409, 410, 418, 419, 420, 421, 430, 431, 432, 434, 435, 436, 437, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 460, 461, 462, 463, 472, 473, 474, 475, 477, 486, 488, 497, 498, 499, 500, 502, 511, 512, 513, 514, 523, 524, 525, 526, 529, 530, 531, 532, 540, 541, 543, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.24528301886792, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 1, "executed_branches": [[97, 98], [97, 99], [341, 342], [341, 347]], "missing_branches": []}}}, "tests\\test_catalog.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_register_and_list": {"executed_lines": [8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 12, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_catalog_factors.py": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_catalog_registers_quant_factors_stack": {"executed_lines": [8, 9, 10, 11], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "test_qdk_catalog_list_shows_factors_version": {"executed_lines": [15, 16, 17, 18, 19], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 7, 14], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_curated.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24, "executed_branches": [], "missing_branches": []}, "normalized_trades": {"executed_lines": [43, 52, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "curate": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "test_session_bar_aggregation_is_deterministic_and_session_anchored": {"executed_lines": [78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_session_bar_refuses_missing_or_future_session_start": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106, "executed_branches": [], "missing_branches": []}, "test_curated_revision_is_immutable_and_lineage_changes_snapshot": {"executed_lines": [119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118, "executed_branches": [], "missing_branches": []}, "test_curated_partition_mutation_is_detected": {"executed_lines": [164, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_curated_reader_rejects_dataset_and_snapshot_path_traversal": {"executed_lines": [178, 179, 180, 181], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 42, 64, 77, 106, 118, 163, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 14, 16, 17, 24, 25, 42, 43, 52, 60, 61, 64, 65, 77, 78, 83, 84, 90, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 110, 111, 118, 119, 124, 130, 136, 137, 138, 139, 145, 151, 152, 153, 159, 160, 163, 164, 169, 170, 171, 172, 173, 174, 177, 178, 179, 180, 181], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_data_lake.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"trade_record": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32, "executed_branches": [], "missing_branches": []}, "admitted_raw": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [], "missing_branches": []}, "test_raw_bytes_are_immutable_idempotent_and_conflict_on_key_reuse": {"executed_lines": [75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74, "executed_branches": [], "missing_branches": []}, "test_raw_mutation_is_detected": {"executed_lines": [114, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113, "executed_branches": [], "missing_branches": []}, "test_raw_request_metadata_must_be_canonical_json": {"executed_lines": [130, 131], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [], "missing_branches": []}, "test_capacity_policy_stops_with_explicit_alert": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": []}, "test_cleanup_requires_verified_archive_restore_and_explicit_confirmation": {"executed_lines": [166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163, "executed_branches": [], "missing_branches": []}, "test_normalized_partitions_quarantine_bad_stream_and_pin_duckdb_snapshot": {"executed_lines": [229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226, "executed_branches": [], "missing_branches": []}, "test_normalized_partition_mutation_fails_hash_validation": {"executed_lines": [274, 275, 283, 284, 285, 286, 287, 288], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_cross_is_quarantined_before_research_layer": {"executed_lines": [292, 293, 319, 336, 344, 345, 346, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291, "executed_branches": [], "missing_branches": []}, "test_normalized_l2_checkpoint_mismatch_is_quarantined": {"executed_lines": [351, 352, 378, 379, 388, 389, 390, 391], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350, "executed_branches": [], "missing_branches": []}, "test_provider_mismatch_and_non_finite_payload_are_quarantine_evidence": {"executed_lines": [399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 56, 74, 113, 129, 141, 163, 226, 273, 291, 350, 396], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 22, 24, 25, 32, 39, 56, 63, 74, 75, 76, 85, 94, 95, 96, 97, 98, 99, 101, 102, 113, 114, 123, 124, 125, 126, 129, 130, 131, 141, 142, 143, 150, 151, 152, 153, 154, 163, 166, 175, 176, 177, 185, 186, 187, 188, 189, 196, 197, 204, 211, 212, 213, 214, 215, 226, 229, 230, 231, 232, 233, 234, 235, 236, 244, 245, 246, 247, 248, 249, 250, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 273, 274, 275, 283, 284, 285, 286, 287, 288, 291, 292, 293, 319, 336, 344, 345, 346, 347, 350, 351, 352, 378, 379, 388, 389, 390, 391, 396, 399, 400, 401, 402, 403, 404, 412, 413, 414, 415, 416, 417, 418], "summary": {"covered_lines": 129, "num_statements": 129, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_integrity_branch_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]], "functions": {"normalized": {"executed_lines": [42, 51, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "legacy_normalized": {"executed_lines": [64, 73, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_legacy_mapping_writer_rejects_untrusted_duplicate_and_cross_provider_raw": {"executed_lines": [88, 89, 98, 107, 108, 109, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85, "executed_branches": [], "missing_branches": []}, "readdress_normalized": {"executed_lines": [135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177]], "missing_branches": []}, "test_normalized_manifest_defense_branches": {"executed_lines": [237, 238, 239, 240], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches": {"executed_lines": [247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 269, 270, 271], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_normalized_file_shape_and_private_guard_branches.mismatched_load": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards": {"executed_lines": [285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [327], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_atomic_staging_and_missing_claim_slow_path_guards.wrong_staging_hash": {"executed_lines": [300, 301], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [302], "excluded_lines": [], "start_line": 299, "executed_branches": [[300, 301]], "missing_branches": [[300, 302]]}, "test_normalized_claim_schema_and_manifest_file_shape": {"executed_lines": [340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339, "executed_branches": [], "missing_branches": []}, "test_legacy_normalized_manifest_remains_strictly_verifiable": {"executed_lines": [408, 409, 410, 411], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402, "executed_branches": [], "missing_branches": []}, "test_legacy_claim_recovery_conflict_and_file_shape_are_fail_closed": {"executed_lines": [415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414, "executed_branches": [], "missing_branches": []}, "test_legacy_snapshot_rejects_unexpected_file": {"executed_lines": [469, 470, 471, 472, 473], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468, "executed_branches": [], "missing_branches": []}, "test_raw_path_staging_and_archive_negative_guards": {"executed_lines": [484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": []}, "test_cleanup_audit_and_legacy_claim_malformed_evidence_fail_closed": {"executed_lines": [529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528, "executed_branches": [], "missing_branches": []}, "readdress_curated": {"executed_lines": [581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574, "executed_branches": [[585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": []}, "curated": {"executed_lines": [604, 605], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_defense_branches": {"executed_lines": [667, 668, 669, 670], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 661, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_file_and_extra_file_guards": {"executed_lines": [679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678, "executed_branches": [], "missing_branches": []}, "test_l2_reconstructed_empty_level_guard": {"executed_lines": [706, 707, 708], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 63, 85, 128, 180, 231, 243, 281, 339, 357, 402, 414, 468, 480, 528, 574, 603, 617, 661, 678, 705], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 29, 30, 31, 32, 34, 41, 42, 51, 59, 60, 63, 64, 73, 81, 82, 85, 88, 89, 98, 107, 108, 109, 117, 118, 128, 135, 136, 137, 138, 139, 140, 143, 144, 145, 146, 149, 162, 170, 171, 172, 173, 174, 175, 176, 177, 180, 231, 237, 238, 239, 240, 243, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 266, 267, 269, 270, 271, 281, 285, 286, 287, 288, 289, 290, 294, 295, 297, 299, 300, 301, 304, 305, 309, 310, 312, 313, 314, 315, 316, 317, 318, 329, 330, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 343, 344, 346, 347, 348, 351, 352, 353, 354, 357, 402, 408, 409, 410, 411, 414, 415, 416, 417, 418, 420, 429, 437, 438, 440, 441, 442, 451, 452, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 480, 484, 493, 494, 495, 496, 497, 498, 499, 500, 506, 507, 508, 509, 511, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 528, 529, 530, 539, 540, 541, 542, 543, 544, 545, 546, 547, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, 564, 565, 567, 571, 574, 581, 582, 583, 584, 585, 586, 594, 595, 596, 597, 598, 599, 600, 603, 604, 605, 617, 661, 667, 668, 669, 670, 678, 679, 680, 681, 682, 683, 690, 691, 692, 693, 694, 695, 696, 697, 705, 706, 707, 708], "summary": {"covered_lines": 262, "num_statements": 264, "percent_covered": 98.91304347826087, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.24242424242425, "percent_statements_covered_display": "99", "num_branches": 12, "num_partial_branches": 1, "covered_branches": 11, "missing_branches": 1, "percent_branches_covered": 91.66666666666667, "percent_branches_covered_display": "92"}, "missing_lines": [302, 327], "excluded_lines": [], "start_line": 1, "executed_branches": [[139, 140], [139, 173], [144, 145], [144, 162], [174, 175], [174, 177], [300, 301], [585, 586], [585, 597], [598, 599], [598, 600]], "missing_branches": [[300, 302]]}}}, "tests\\test_l2_replay.py": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": [], "functions": {"snapshot": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11, "executed_branches": [], "missing_branches": []}, "delta": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50, "executed_branches": [], "missing_branches": []}, "apply_atomic_group": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79, "executed_branches": [], "missing_branches": []}, "test_snapshot_delta_replay_and_checkpoint_hash_are_deterministic": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "test_gap_duplicate_and_out_of_order_are_rejected": {"executed_lines": [122, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_crossed_delta_is_transactional_and_does_not_pollute_state": {"executed_lines": [127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once": {"executed_lines": [138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 170, 175, 176, 177], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160]], "missing_branches": []}, "test_atomic_multi_level_group_matches_serial_golden_and_checks_book_once.counted_assert": {"executed_lines": [167, 168], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [], "missing_branches": []}, "test_atomic_multi_level_group_allows_transient_cross_but_commits_valid_final_book": {"executed_lines": [181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180, "executed_branches": [[192, 193], [192, 196], [193, 192], [193, 194]], "missing_branches": []}, "test_atomic_multi_level_group_rejects_bad_row_and_rolls_back": {"executed_lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [[246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}, "test_atomic_multi_level_group_defensive_entry_guards_preserve_state": {"executed_lines": [258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257, "executed_branches": [], "missing_branches": []}, "test_delete_absent_level_and_price_scale_change_are_rejected": {"executed_lines": [308, 309, 310, 317, 318, 319, 320, 321, 322], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307, "executed_branches": [], "missing_branches": []}, "test_checkpoint_mismatch_and_missing_checkpoint_fail": {"executed_lines": [326, 327, 328, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [], "missing_branches": []}, "test_snapshot_duplicate_price_and_cross_are_rejected_by_frozen_contract": {"executed_lines": [334, 335, 336, 337, 338, 339, 340, 341], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_resync_snapshot_cannot_switch_stream_identity": {"executed_lines": [345, 346, 347, 348, 349, 350, 351, 352], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344, "executed_branches": [], "missing_branches": []}, "test_uninitialized_unsupported_and_non_snapshot_entry_fail_closed": {"executed_lines": [356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_snapshot_and_delta_time_and_sequence_must_strictly_advance": {"executed_lines": [370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369, "executed_branches": [], "missing_branches": []}, "test_validated_snapshot_and_batch_guards_preserve_state": {"executed_lines": [389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [], "missing_branches": []}, "test_private_validated_dispatch_and_uniform_batch_fail_closed": {"executed_lines": [416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 5, 7, 8, 11, 50, 79, 99, 113, 121, 126, 135, 180, 210, 241, 257, 307, 325, 333, 344, 355, 369, 388, 415], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 5, 7, 8, 11, 12, 50, 59, 60, 79, 83, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 135, 138, 151, 152, 153, 155, 156, 157, 158, 160, 161, 162, 163, 165, 167, 168, 170, 175, 176, 177, 180, 181, 192, 193, 194, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 210, 241, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 259, 273, 274, 275, 277, 278, 279, 280, 281, 294, 295, 296, 297, 300, 301, 304, 307, 308, 309, 310, 317, 318, 319, 320, 321, 322, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 406, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 419, 420, 421, 422, 437, 438, 452, 453, 454, 455, 456, 457, 458, 459, 460], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 14, "num_partial_branches": 0, "covered_branches": 14, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[151, 152], [151, 155], [152, 151], [152, 153], [157, 158], [157, 160], [192, 193], [192, 196], [193, 192], [193, 194], [246, 247], [246, 249], [247, 246], [247, 248]], "missing_branches": []}}}, "tests\\test_m2_audit_regressions.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]], "functions": {"trade": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "raw": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65, "executed_branches": [], "missing_branches": []}, "normalized": {"executed_lines": [78, 79, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable": {"executed_lines": [95, 96, 105, 107, 112, 113, 114, 115, 116, 117, 118], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": []}, "test_windows_illegal_colon_is_rejected_and_atomic_publish_is_retryable.interrupted_replace": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107, "executed_branches": [[108, 109], [108, 110]], "missing_branches": []}, "test_preexisting_half_object_is_quarantined_without_blocking_retry": {"executed_lines": [122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121, "executed_branches": [], "missing_branches": []}, "test_manifest_anchor_detects_coordinated_retention_and_collection_mutation": {"executed_lines": [146, 147, 148, 149, 150, 151, 152, 153, 154], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_raw_write_read_and_cleanup_reject_junction_escape": {"executed_lines": [159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [171, 188], "excluded_lines": [], "start_line": 158, "executed_branches": [[170, 172], [187, 189]], "missing_branches": [[170, 171], [187, 188]]}, "test_raw_write_rejects_symbolic_link_escape": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 210, "executed_branches": [], "missing_branches": []}, "test_cleanup_rejects_fabricated_missing_and_remote_archives": {"executed_lines": [223, 224, 231, 232, 233, 240, 241, 242], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222, "executed_branches": [[231, 232], [231, 240]], "missing_branches": []}, "test_normalized_requires_existing_unmodified_raw_reference": {"executed_lines": [252, 253, 256, 257, 265, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "test_global_event_id_duplicates_across_streams_are_all_quarantined": {"executed_lines": [279, 280, 281, 282, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278, "executed_branches": [], "missing_branches": []}, "test_arrow_canonical_timestamp_and_physical_snapshot_binding": {"executed_lines": [298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297, "executed_branches": [], "missing_branches": []}, "test_duckdb_blocks_direct_cte_and_parameterized_external_reads": {"executed_lines": [326, 327, 328, 331, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325, "executed_branches": [[338, -325], [338, 339]], "missing_branches": []}, "test_curated_rejects_fake_lineage_and_binds_physical_content": {"executed_lines": [344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343, "executed_branches": [], "missing_branches": []}, "test_normalized_and_curated_writers_apply_capacity_gate": {"executed_lines": [382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 65, 77, 91, 121, 143, 157, 158, 209, 210, 222, 251, 278, 297, 325, 343, 381], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 27, 29, 34, 41, 48, 65, 66, 77, 78, 79, 87, 88, 91, 95, 96, 105, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 121, 122, 123, 124, 125, 133, 134, 135, 136, 137, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 157, 158, 159, 160, 161, 162, 163, 164, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 187, 189, 190, 191, 199, 200, 209, 210, 222, 223, 224, 231, 232, 233, 240, 241, 242, 251, 252, 253, 256, 257, 265, 266, 267, 268, 278, 279, 280, 281, 282, 290, 291, 292, 297, 298, 299, 300, 308, 309, 311, 312, 313, 314, 315, 316, 317, 320, 321, 322, 325, 326, 327, 328, 331, 338, 339, 340, 343, 344, 345, 359, 360, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 383, 384, 393, 394, 395], "summary": {"covered_lines": 165, "num_statements": 175, "percent_covered": 93.51351351351352, "percent_covered_display": "94", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 94.28571428571429, "percent_statements_covered_display": "94", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 8, "missing_branches": 2, "percent_branches_covered": 80.0, "percent_branches_covered_display": "80"}, "missing_lines": [171, 188, 211, 212, 213, 214, 215, 217, 218, 219], "excluded_lines": [], "start_line": 1, "executed_branches": [[108, 109], [108, 110], [170, 172], [187, 189], [231, 232], [231, 240], [338, -325], [338, 339]], "missing_branches": [[170, 171], [187, 188]]}}}, "tests\\test_m2_coverage_gates.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": [], "functions": {"_replace": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [[58, 59], [58, 60]], "missing_branches": []}, "test_schema_negative_branch_matrix": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93, "executed_branches": [], "missing_branches": []}, "test_schema_delete_delta_corporate_ratio_and_registry_fail_closed": {"executed_lines": [99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98, "executed_branches": [[114, 115], [114, 119]], "missing_branches": []}, "test_data_lake_guard_branches_are_explicit": {"executed_lines": [130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129, "executed_branches": [[135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176]], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable": {"executed_lines": [202, 203, 204, 206, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198, "executed_branches": [], "missing_branches": []}, "test_atomic_metadata_and_raw_staging_recovery_are_retryable.fail_replace": {"executed_lines": [207], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206, "executed_branches": [], "missing_branches": []}, "test_raw_manifest_fields_are_independently_anchored": {"executed_lines": [250, 251, 252, 253, 254, 255, 256], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244, "executed_branches": [], "missing_branches": []}, "test_raw_directory_claim_and_cleanup_state_guards": {"executed_lines": [260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259, "executed_branches": [], "missing_branches": []}, "test_quarantine_published_batch_is_fully_verified": {"executed_lines": [302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301, "executed_branches": [[313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322]], "missing_branches": []}, "test_empty_quarantine_and_unknown_event_helpers_are_closed": {"executed_lines": [334, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit": {"executed_lines": [350, 356, 358, 363, 370, 371, 372, 374, 377, 378, 386, 388, 393, 400, 401, 402, 404, 407, 408, 416, 417, 418, 419, 420, 421, 422], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 349, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.windows_lock": {"executed_lines": [359, 360, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358, "executed_branches": [[360, -358], [360, 361]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.always_contended": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374, "executed_branches": [], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_lock": {"executed_lines": [389, 390, 391], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388, "executed_branches": [[390, -388], [390, 391]], "missing_branches": []}, "test_process_lock_platform_dispatch_and_timeout_are_explicit.posix_always_contended": {"executed_lines": [405], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404, "executed_branches": [], "missing_branches": []}, "test_raw_claim_cleanup_and_deleting_state_tampering_fail_closed": {"executed_lines": [426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425, "executed_branches": [[444, 448], [444, 457]], "missing_branches": []}, "test_normalized_admission_and_snapshot_metadata_guards": {"executed_lines": [472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471, "executed_branches": [], "missing_branches": []}, "test_curated_writer_and_reader_negative_guards": {"executed_lines": [512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511, "executed_branches": [], "missing_branches": []}, "test_curated_manifest_and_revision_tampering_are_rejected": {"executed_lines": [571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 64, 93, 98, 129, 198, 235, 244, 259, 300, 301, 333, 349, 425, 471, 511, 570], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 28, 29, 46, 48, 49, 54, 55, 56, 57, 58, 59, 60, 61, 64, 93, 94, 95, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 135, 136, 137, 138, 143, 144, 146, 147, 155, 156, 164, 165, 166, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 202, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 231, 232, 235, 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 290, 291, 300, 301, 302, 303, 304, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 322, 323, 324, 333, 334, 344, 345, 346, 349, 350, 356, 358, 359, 360, 361, 363, 370, 371, 372, 374, 375, 377, 378, 386, 388, 389, 390, 391, 393, 400, 401, 402, 404, 405, 407, 408, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 444, 448, 449, 457, 458, 459, 460, 461, 462, 471, 472, 473, 474, 482, 483, 491, 492, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 522, 523, 524, 533, 534, 544, 545, 546, 547, 548, 556, 557, 558, 570, 571, 572, 582, 583, 584, 585, 586, 587], "summary": {"covered_lines": 279, "num_statements": 280, "percent_covered": 99.66887417218543, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.64285714285714, "percent_statements_covered_display": "99", "num_branches": 22, "num_partial_branches": 0, "covered_branches": 22, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [354], "excluded_lines": [], "start_line": 1, "executed_branches": [[58, 59], [58, 60], [114, 115], [114, 119], [135, 136], [135, 138], [138, 143], [138, 146], [164, 165], [164, 176], [313, 314], [313, 315], [315, 316], [315, 317], [317, 318], [317, 322], [360, -358], [360, 361], [390, -388], [390, 391], [444, 448], [444, 457]], "missing_branches": []}}}, "tests\\test_m2_integration.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]], "functions": {"crypto_context": {"executed_lines": [20, 21, 27, 36], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 19, "executed_branches": [[20, 21]], "missing_branches": [[20, 29]]}, "test_public_m2_api_and_version_are_exposed": {"executed_lines": [40, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [[41, -39], [41, 51]], "missing_branches": []}, "test_build_and_runtime_versions_share_one_authoritative_source": {"executed_lines": [55, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54, "executed_branches": [], "missing_branches": []}, "test_raw_to_normalized_duckdb_l2_curated_chain_is_replayable": {"executed_lines": [62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61, "executed_branches": [], "missing_branches": []}, "test_domestic_fixture_chain_remains_fixture_only": {"executed_lines": [136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 39, 54, 61, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 19, 20, 21, 27, 36, 39, 40, 41, 51, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 74, 75, 76, 78, 79, 80, 88, 89, 90, 91, 99, 100, 102, 103, 107, 110, 111, 115, 116, 117, 128, 129, 135, 136, 137, 145, 146, 155, 163, 164, 165, 166], "summary": {"covered_lines": 60, "num_statements": 62, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [29, 35], "excluded_lines": [], "start_line": 1, "executed_branches": [[20, 21], [41, -39], [41, 51]], "missing_branches": [[20, 29]]}}}, "tests\\test_m2_process_integrity.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]], "functions": {"_raw_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [51, 52, 53, 55, 62, 63, 64, 73, 74, 75], "excluded_lines": [], "start_line": 43, "executed_branches": [], "missing_branches": [[52, 53], [52, 63]]}, "_raw_process.crash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [56, 59, 60], "excluded_lines": [], "start_line": 55, "executed_branches": [], "missing_branches": [[56, 59], [56, 60]]}, "_cleanup_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [85, 86, 87, 94, 95, 96], "excluded_lines": [], "start_line": 78, "executed_branches": [], "missing_branches": []}, "_quarantine_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [100, 101, 102, 109, 110, 111], "excluded_lines": [], "start_line": 99, "executed_branches": [], "missing_branches": []}, "_normalized_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [121, 122, 123, 131, 132, 133], "excluded_lines": [], "start_line": 114, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [137, 138, 139, 141, 146, 147, 148], "excluded_lines": [], "start_line": 136, "executed_branches": [], "missing_branches": []}, "_atomic_hard_exit_process.crash_before_replace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 141, "executed_branches": [], "missing_branches": [[142, 143], [142, 144]]}, "_normalized_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [156, 158, 163, 164], "excluded_lines": [], "start_line": 151, "executed_branches": [], "missing_branches": []}, "_normalized_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [159, 160, 161], "excluded_lines": [], "start_line": 158, "executed_branches": [], "missing_branches": [[159, 160], [159, 161]]}, "_curated_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [180, 181, 182, 194, 195, 196], "excluded_lines": [], "start_line": 174, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [200, 202, 207, 208], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "_curated_hard_exit_process.crash_before_publish": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [203, 204, 205], "excluded_lines": [], "start_line": 202, "executed_branches": [], "missing_branches": [[203, 204], [203, 205]]}, "_hold_staging_process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230, 236, 237, 238, 239], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "_run_pair": {"executed_lines": [243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 242, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264]], "missing_branches": [[254, 255]]}, "_raw": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_normalized": {"executed_lines": [282, 283, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281, "executed_branches": [], "missing_branches": []}, "test_raw_key_lock_is_process_safe": {"executed_lines": [297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296, "executed_branches": [[306, 307], [306, 310]], "missing_branches": []}, "test_raw_key_claim_survives_corruption_and_hard_exit_staging": {"executed_lines": [317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316, "executed_branches": [], "missing_branches": []}, "test_raw_key_claim_is_source_global_across_collection_dates": {"executed_lines": [353, 354, 363, 364, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352, "executed_branches": [], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes": {"executed_lines": [382, 383, 384, 385, 386, 394, 395, 397, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377, "executed_branches": [[415, 416], [415, 420]], "missing_branches": []}, "test_cleanup_failure_is_visible_and_retry_resumes.fail_once": {"executed_lines": [399, 400, 401, 402], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397, "executed_branches": [[399, 400], [399, 402]], "missing_branches": []}, "test_cleanup_same_key_is_process_idempotent": {"executed_lines": [433, 434, 435, 436, 437, 445, 452, 453, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable": {"executed_lines": [461, 462, 463, 464, 466, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457, "executed_branches": [], "missing_branches": []}, "test_quarantine_failure_and_process_concurrency_are_retryable.fail_manifest": {"executed_lines": [468, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466, "executed_branches": [[468, 469], [468, 471]], "missing_branches": []}, "test_adapter_batch_transaction_rolls_back_final_validation_failure": {"executed_lines": [507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503, "executed_branches": [[515, 516], [515, 518], [527, 528], [527, 529]], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry": {"executed_lines": [536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 579, 580, 581, 589, 590, 591, 599], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532, "executed_branches": [], "missing_branches": []}, "test_event_claim_reuse_conflict_tamper_and_publish_retry.fail_snapshot_publish": {"executed_lines": [574, 575, 576, 577], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[574, 575], [574, 577]], "missing_branches": []}, "test_event_claim_and_curated_revision_are_process_safe": {"executed_lines": [603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovers_from_snapshot_and_preserves_binding": {"executed_lines": [637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636, "executed_branches": [], "missing_branches": []}, "test_deleted_event_claim_recovery_is_process_safe": {"executed_lines": [658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 657, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovers_and_preserves_binding": {"executed_lines": [694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": []}, "test_deleted_curated_revision_recovery_is_process_safe": {"executed_lines": [742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 741, "executed_branches": [], "missing_branches": []}, "_curated_process_once": {"executed_lines": [766], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 765, "executed_branches": [], "missing_branches": []}, "test_atomic_normalized_and_curated_staging_recover_after_hard_exit": {"executed_lines": [779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 778, "executed_branches": [[782, 783], [782, 790]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 269, 281, 295, 296, 316, 352, 376, 377, 432, 457, 502, 503, 532, 602, 636, 657, 693, 741, 765, 778], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 31, 32, 33, 35, 40, 43, 78, 99, 114, 136, 151, 174, 199, 220, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 258, 259, 260, 261, 264, 266, 269, 270, 281, 282, 283, 291, 292, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 334, 335, 336, 337, 338, 339, 348, 349, 352, 353, 354, 363, 364, 373, 376, 377, 382, 383, 384, 385, 386, 394, 395, 397, 399, 400, 401, 402, 404, 405, 406, 413, 414, 415, 416, 417, 418, 419, 420, 421, 428, 429, 432, 433, 434, 435, 436, 437, 445, 452, 453, 454, 457, 461, 462, 463, 464, 466, 468, 469, 470, 471, 473, 474, 475, 482, 483, 490, 492, 493, 497, 498, 499, 502, 503, 507, 512, 513, 514, 515, 516, 518, 520, 521, 522, 524, 525, 526, 527, 528, 529, 532, 536, 537, 538, 539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 558, 563, 564, 565, 567, 568, 569, 570, 572, 574, 575, 576, 577, 579, 580, 581, 589, 590, 591, 599, 602, 603, 604, 605, 606, 607, 608, 609, 616, 617, 618, 619, 621, 622, 623, 624, 631, 632, 633, 636, 637, 638, 639, 640, 641, 642, 644, 645, 646, 647, 649, 650, 651, 652, 653, 654, 657, 658, 659, 660, 661, 662, 663, 664, 671, 672, 673, 674, 676, 677, 678, 679, 680, 687, 688, 689, 690, 693, 694, 695, 696, 706, 707, 708, 718, 719, 724, 725, 726, 727, 741, 742, 743, 744, 745, 746, 747, 748, 755, 756, 757, 758, 759, 765, 766, 778, 779, 780, 781, 782, 783, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 826, 827, 828, 829, 837, 838, 839, 840, 841, 842, 843, 845, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 870, 871, 872, 873, 883, 884, 885, 886, 887, 888, 889, 891, 892, 897, 902, 909, 910, 911, 912, 914, 915, 916, 923, 924, 925], "summary": {"covered_lines": 371, "num_statements": 443, "percent_covered": 82.59958071278825, "percent_covered_display": "83", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 83.7471783295711, "percent_statements_covered_display": "84", "num_branches": 34, "num_partial_branches": 1, "covered_branches": 23, "missing_branches": 11, "percent_branches_covered": 67.6470588235294, "percent_branches_covered_display": "68"}, "missing_lines": [51, 52, 53, 55, 56, 59, 60, 62, 63, 64, 73, 74, 75, 85, 86, 87, 94, 95, 96, 100, 101, 102, 109, 110, 111, 121, 122, 123, 131, 132, 133, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 156, 158, 159, 160, 161, 163, 164, 180, 181, 182, 194, 195, 196, 200, 202, 203, 204, 205, 207, 208, 229, 230, 236, 237, 238, 239, 255, 256, 257, 262, 263], "excluded_lines": [], "start_line": 1, "executed_branches": [[249, 250], [249, 251], [252, 253], [252, 258], [254, 252], [259, 260], [259, 264], [306, 307], [306, 310], [399, 400], [399, 402], [415, 416], [415, 420], [468, 469], [468, 471], [515, 516], [515, 518], [527, 528], [527, 529], [574, 575], [574, 577], [782, 783], [782, 790]], "missing_branches": [[52, 53], [52, 63], [56, 59], [56, 60], [142, 143], [142, 144], [159, 160], [159, 161], [203, 204], [203, 205], [254, 255]]}}}, "tests\\test_normalized_v3.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": [], "functions": {"_record_batch": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [], "missing_branches": []}, "_strict_batches": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44, "executed_branches": [], "missing_branches": []}, "_assert_no_snapshot": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64, "executed_branches": [], "missing_branches": []}, "_raw": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69, "executed_branches": [], "missing_branches": []}, "test_small_golden_legacy_and_v3_have_identical_logical_events_and_claims": {"executed_lines": [84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134]], "missing_branches": []}, "test_native_writer_validator_matches_frozen_validator_for_l2_edges": {"executed_lines": [139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138, "executed_branches": [[150, 151], [150, 154], [154, -138], [154, 155]], "missing_branches": []}, "test_v3_manifest_is_compact_and_does_not_create_per_event_json": {"executed_lines": [163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162, "executed_branches": [[165, 166], [165, 171]], "missing_branches": []}, "test_missing_claim_index_recovers_but_tampering_fails_closed": {"executed_lines": [200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [], "missing_branches": []}, "test_streaming_writer_applies_capacity_gate_before_partition_write": {"executed_lines": [230, 231, 236, 237, 245], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_preserve_events_claims_and_l2_state_across_entrypoints": {"executed_lines": [251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248, "executed_branches": [[277, 278], [277, 287]], "missing_branches": []}, "test_record_batch_reader_is_a_supported_strict_input": {"executed_lines": [291, 292, 293, 294, 295, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary": {"executed_lines": [303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 330, 335, 344, 345, 346, 347, 348], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299, "executed_branches": [[318, 319], [318, 323], [320, 318], [320, 321]], "missing_branches": []}, "test_encoded_dense_group_is_atomic_across_input_batch_boundary.observed_apply": {"executed_lines": [327, 328], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_identity_is_independent_of_input_batch_boundaries": {"executed_lines": [354, 356, 361, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351, "executed_branches": [], "missing_branches": []}, "test_arrow_schema_pit_sequence_and_duplicate_fail_closed": {"executed_lines": [373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372, "executed_branches": [[416, -372], [416, 417]], "missing_branches": []}, "test_arrow_l2_cross_delete_heartbeat_and_reset_are_explicitly_rejected": {"executed_lines": [426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 423, "executed_branches": [[437, 438], [437, 439], [457, -423], [457, 458]], "missing_branches": []}, "test_arrow_claim_conflict_capacity_and_nonmonotonic_order_fail_closed": {"executed_lines": [467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464, "executed_branches": [], "missing_branches": []}, "test_arrow_float_schema_preserves_frozen_claims_and_logical_rows": {"executed_lines": [505, 507, 512, 513, 514, 515, 523, 524, 525, 526], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504, "executed_branches": [], "missing_branches": []}, "test_mapping_and_arrow_sort_chronologically_across_fractional_second_boundary": {"executed_lines": [540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537, "executed_branches": [], "missing_branches": []}, "test_event_claim_sequence_supports_sequence_indexing_and_reverse_slices": {"executed_lines": [575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 572, "executed_branches": [[576, 577], [576, 578]], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries": {"executed_lines": [610, 611, 613, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606, "executed_branches": [], "missing_branches": []}, "test_arrow_snapshot_publish_failure_rolls_back_claim_index_and_retries.fail_snapshot_publish": {"executed_lines": [615, 616, 617, 618], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613, "executed_branches": [[615, 616], [615, 618]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 44, 64, 69, 81, 138, 162, 199, 229, 248, 290, 299, 351, 372, 423, 464, 504, 537, 572, 606], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 24, 25, 26, 27, 28, 30, 37, 38, 39, 40, 41, 44, 52, 53, 64, 65, 66, 69, 70, 81, 84, 86, 87, 88, 89, 90, 91, 99, 107, 108, 109, 110, 114, 118, 119, 120, 121, 122, 123, 124, 125, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 179, 180, 183, 184, 185, 186, 187, 188, 196, 199, 200, 201, 209, 210, 213, 214, 215, 216, 217, 219, 220, 221, 222, 224, 225, 226, 229, 230, 231, 236, 237, 245, 248, 251, 253, 254, 255, 256, 264, 269, 270, 271, 272, 273, 274, 277, 278, 287, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 326, 327, 328, 330, 335, 344, 345, 346, 347, 348, 351, 354, 356, 361, 366, 367, 368, 369, 372, 373, 375, 376, 377, 378, 379, 384, 386, 387, 394, 399, 401, 406, 408, 409, 414, 416, 417, 418, 419, 420, 423, 426, 427, 428, 435, 436, 437, 438, 439, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 474, 476, 477, 482, 483, 489, 491, 492, 493, 494, 495, 496, 501, 504, 505, 507, 512, 513, 514, 515, 523, 524, 525, 526, 537, 540, 541, 542, 543, 544, 545, 546, 554, 559, 560, 561, 572, 575, 576, 577, 578, 579, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 606, 610, 611, 613, 615, 616, 617, 618, 620, 621, 622, 623, 624, 626, 627, 628, 629], "summary": {"covered_lines": 295, "num_statements": 295, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 26, "num_partial_branches": 0, "covered_branches": 26, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[119, 120], [119, 123], [124, 125], [124, 134], [150, 151], [150, 154], [154, -138], [154, 155], [165, 166], [165, 171], [277, 278], [277, 287], [318, 319], [318, 323], [320, 318], [320, 321], [416, -372], [416, 417], [437, 438], [437, 439], [457, -423], [457, 458], [576, 577], [576, 578], [615, 616], [615, 618]], "missing_branches": []}}}, "tests\\test_normalized_v3_failures.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": [], "functions": {"_encoded_delta_group": {"executed_lines": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54]], "missing_branches": []}, "_set_path": {"executed_lines": [60, 61, 62, 63], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [[61, 62], [61, 63]], "missing_branches": []}, "test_native_l2_validator_exercises_failure_semantics": {"executed_lines": [102, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [], "missing_branches": []}, "test_input_spool_fallback_and_malformed_records_are_explicit": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109, "executed_branches": [], "missing_branches": []}, "test_digest_and_staging_corruption_guards": {"executed_lines": [143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 139, "executed_branches": [], "missing_branches": []}, "_rewrite_index_manifest": {"executed_lines": [173, 174, 175, 176, 179], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169, "executed_branches": [], "missing_branches": []}, "test_claim_index_manifest_tampering_fails_closed": {"executed_lines": [184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 0, "covered_branches": 8, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183, "executed_branches": [[191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215]], "missing_branches": []}, "test_claim_index_schema_logical_shape_and_missing_manifest_paths": {"executed_lines": [224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221, "executed_branches": [], "missing_branches": []}, "test_v3_claim_conflicts_include_historical_legacy_snapshots": {"executed_lines": [315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314, "executed_branches": [], "missing_branches": []}, "_replace_column": {"executed_lines": [356, 357], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_delta_constraints_fail_closed": {"executed_lines": [434, 435, 436, 441], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427, "executed_branches": [], "missing_branches": []}, "test_arrow_vector_action_quantity_contract": {"executed_lines": [458, 459, 460], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451, "executed_branches": [], "missing_branches": []}, "test_arrow_common_null_empty_precision_source_and_sequence_guards": {"executed_lines": [468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467, "executed_branches": [[484, 485], [484, 486], [487, -467], [487, 488]], "missing_branches": []}, "test_arrow_input_reference_and_empty_batch_contracts": {"executed_lines": [495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494, "executed_branches": [], "missing_branches": []}, "test_encoded_group_batch_coalescer_preserves_order_and_atomic_boundaries": {"executed_lines": [547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546, "executed_branches": [], "missing_branches": []}, "test_encoded_group_layout_and_concat_helpers_fail_closed": {"executed_lines": [586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585, "executed_branches": [], "missing_branches": []}, "test_encoded_group_checkpoint_and_time_fallbacks_remain_strict": {"executed_lines": [631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630, "executed_branches": [[647, 648], [647, 649]], "missing_branches": []}, "test_encoded_atomic_group_negative_gates_publish_nothing": {"executed_lines": [709, 710, 711, 712, 713, 714, 715, 720], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 703, "executed_branches": [], "missing_branches": []}, "test_encoded_atomic_group_duplicate_claim_is_not_bypassed": {"executed_lines": [724, 725, 726, 727, 728, 729, 734], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 723, "executed_branches": [], "missing_branches": []}, "test_mixed_l2_batch_uses_serial_semantics_and_checkpoint_contracts": {"executed_lines": [738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 737, "executed_branches": [[764, -737], [764, 765]], "missing_branches": []}, "test_mapping_missing_expected_l2_stream_fails_instead_of_silently_passing": {"executed_lines": [779, 780, 781, 782, 791], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 776, "executed_branches": [], "missing_branches": []}, "test_arrow_batches_reject_cross_batch_partition_time_regression": {"executed_lines": [795, 796, 797, 798, 799, 804], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 794, "executed_branches": [], "missing_branches": []}, "test_mapping_unsorted_partition_is_sorted_without_changing_events": {"executed_lines": [808, 809, 810, 811, 812, 820, 821, 826], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 807, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path": {"executed_lines": [833, 834, 836, 840, 841, 842, 847, 848, 849], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829, "executed_branches": [], "missing_branches": []}, "test_arrow_datetime_input_and_capacity_recheck_path.observed_capacity": {"executed_lines": [837, 838], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 836, "executed_branches": [], "missing_branches": []}, "test_arrow_common_datetime_is_utc_and_partition_digest_is_strict": {"executed_lines": [853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 852, "executed_branches": [], "missing_branches": []}, "test_arrow_conversion_digest_and_type_helpers_cover_nested_contracts": {"executed_lines": [880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 879, "executed_branches": [], "missing_branches": []}, "test_partition_buffers_reject_internal_schema_and_sort_corruption": {"executed_lines": [907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903, "executed_branches": [[979, 980], [979, 982]], "missing_branches": []}, "test_partition_scans_and_empty_claim_helpers_are_defensive": {"executed_lines": [989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 988, "executed_branches": [], "missing_branches": []}, "test_arrow_uniform_final_checkpoint_and_idempotent_snapshot_publish": {"executed_lines": [1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1032, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible": {"executed_lines": [1065, 1066, 1067, 1069, 1072, 1073, 1074], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1061, "executed_branches": [], "missing_branches": []}, "test_arrow_existing_snapshot_collision_is_visible.mismatched_load": {"executed_lines": [1070], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1069, "executed_branches": [], "missing_branches": []}, "test_v3_snapshot_manifest_malformed_and_unknown_hash_fail_closed": {"executed_lines": [1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1077, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults": {"executed_lines": [1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1126, "executed_branches": [], "missing_branches": []}, "test_mapping_invalid_stream_capacity_and_claim_count_faults.observed_capacity": {"executed_lines": [1148, 1149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1147, "executed_branches": [], "missing_branches": []}, "test_strict_claim_count_fault_does_not_publish": {"executed_lines": [1185, 1186, 1187, 1188], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181, "executed_branches": [], "missing_branches": []}, "test_arrow_uniformity_fixed_point_null_and_missing_event_type_guards": {"executed_lines": [1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1191, "executed_branches": [], "missing_branches": []}, "test_duplicate_spool_ignores_non_string_ids_and_finds_repeats": {"executed_lines": [1240, 1241, 1252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1239, "executed_branches": [], "missing_branches": []}, "test_mapping_duplicate_exclusion_cannot_publish_a_gapped_l2_stream": {"executed_lines": [1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1255, "executed_branches": [], "missing_branches": []}, "test_duplicate_exclusion_revalidation_rechecks_expected_l2_streams": {"executed_lines": [1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1281, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 59, 66, 96, 109, 139, 169, 182, 183, 221, 314, 355, 360, 427, 444, 451, 467, 494, 546, 585, 630, 673, 703, 723, 737, 776, 794, 807, 829, 852, 879, 903, 988, 1032, 1061, 1077, 1126, 1181, 1191, 1239, 1255, 1281], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 23, 24, 25, 26, 27, 28, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 63, 66, 96, 102, 103, 104, 105, 106, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 139, 143, 144, 145, 146, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 169, 173, 174, 175, 176, 179, 182, 183, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 196, 197, 201, 202, 203, 207, 208, 209, 213, 215, 216, 217, 218, 221, 224, 225, 230, 231, 237, 238, 239, 241, 242, 247, 248, 254, 255, 258, 260, 261, 262, 263, 269, 270, 271, 274, 278, 279, 280, 286, 287, 289, 290, 291, 292, 298, 299, 300, 301, 302, 303, 304, 310, 311, 314, 315, 316, 324, 326, 327, 335, 336, 339, 341, 342, 343, 344, 345, 355, 356, 357, 360, 427, 434, 435, 436, 441, 444, 451, 458, 459, 460, 467, 468, 469, 479, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, 498, 499, 507, 508, 516, 517, 525, 526, 534, 542, 543, 546, 547, 548, 549, 550, 552, 557, 558, 559, 565, 568, 570, 575, 577, 582, 585, 586, 587, 588, 589, 597, 605, 610, 615, 616, 617, 618, 619, 620, 621, 623, 624, 625, 626, 627, 630, 631, 632, 633, 634, 635, 636, 637, 643, 644, 646, 647, 648, 649, 654, 656, 661, 663, 664, 670, 673, 703, 709, 710, 711, 712, 713, 714, 715, 720, 723, 724, 725, 726, 727, 728, 729, 734, 737, 738, 743, 744, 745, 746, 752, 753, 755, 764, 765, 766, 767, 773, 776, 779, 780, 781, 782, 791, 794, 795, 796, 797, 798, 799, 804, 807, 808, 809, 810, 811, 812, 820, 821, 826, 829, 833, 834, 836, 837, 838, 840, 841, 842, 847, 848, 849, 852, 853, 854, 855, 856, 863, 864, 865, 866, 867, 868, 869, 870, 871, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 893, 894, 895, 897, 898, 899, 900, 903, 907, 908, 909, 910, 911, 918, 919, 920, 921, 922, 923, 925, 932, 933, 938, 939, 940, 946, 947, 948, 949, 950, 951, 952, 953, 955, 956, 965, 966, 975, 977, 978, 979, 980, 981, 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1019, 1032, 1033, 1034, 1035, 1036, 1037, 1043, 1049, 1050, 1052, 1058, 1061, 1065, 1066, 1067, 1069, 1070, 1072, 1073, 1074, 1077, 1078, 1079, 1084, 1085, 1092, 1093, 1094, 1095, 1096, 1098, 1099, 1100, 1101, 1104, 1105, 1106, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1126, 1130, 1131, 1132, 1133, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1163, 1164, 1166, 1167, 1168, 1169, 1170, 1178, 1181, 1185, 1186, 1187, 1188, 1191, 1194, 1195, 1196, 1197, 1202, 1203, 1205, 1206, 1207, 1211, 1212, 1213, 1219, 1223, 1224, 1226, 1231, 1232, 1239, 1240, 1241, 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1265, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1303, 1304, 1305, 1306, 1308], "summary": {"covered_lines": 556, "num_statements": 557, "percent_covered": 99.82788296041308, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.82046678635548, "percent_statements_covered_display": "99", "num_branches": 24, "num_partial_branches": 0, "covered_branches": 24, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [166], "excluded_lines": [], "start_line": 1, "executed_branches": [[46, 47], [46, 56], [52, 53], [52, 54], [61, 62], [61, 63], [191, 192], [191, 196], [196, 197], [196, 202], [202, 203], [202, 208], [208, 209], [208, 215], [484, 485], [484, 486], [487, -467], [487, 488], [647, 648], [647, 649], [764, -737], [764, 765], [979, 980], [979, 982]], "missing_branches": []}}}, "tests\\test_panel.py": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_merge_earnings_to_panel": {"executed_lines": [11, 18, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_merge_northbound_to_panel": {"executed_lines": [35, 42, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34, "executed_branches": [], "missing_branches": []}, "test_add_industry_relative_strength": {"executed_lines": [54, 62, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 10, 34, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 18, 30, 31, 34, 35, 42, 49, 50, 53, 54, 62, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_alt.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_earnings_forecast_mock": {"executed_lines": [9, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_fetch_earnings_forecast_mock.mock_fetch": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock": {"executed_lines": [26, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25, "executed_branches": [], "missing_branches": []}, "test_fetch_northbound_mock.mock_fetch": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock": {"executed_lines": [41, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40, "executed_branches": [], "missing_branches": []}, "test_fetch_industry_returns_mock.mock_fetch": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 25, 40], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 20, 21, 22, 25, 26, 27, 35, 36, 37, 40, 41, 42, 49, 52, 53], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_providers_prices.py": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_fetch_daily_prices_mock": {"executed_lines": [7, 20, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6, "executed_branches": [], "missing_branches": []}, "test_fetch_daily_prices_mock.mock_fetch": {"executed_lines": [8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 6, 7, 8, 20, 21, 22], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_snapshots.py": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_snapshot_is_content_addressed_and_idempotent": {"executed_lines": [9, 10, 11, 12, 13, 14], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8, "executed_branches": [], "missing_branches": []}, "test_snapshot_detects_mutation": {"executed_lines": [18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 8, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_storage.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_validate_price_frame_ok": {"executed_lines": [11, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_validate_price_frame_missing_column": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27, "executed_branches": [], "missing_branches": []}, "test_cache_covers_range": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33, "executed_branches": [], "missing_branches": []}, "test_save_manifest": {"executed_lines": [40, 41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39, "executed_branches": [], "missing_branches": []}, "test_should_refresh_cache": {"executed_lines": [50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 27, 33, 39, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 22, 23, 24, 27, 28, 29, 30, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 59, 60, 61, 62, 63, 64], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_temporal.py": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_point_in_time_join_uses_availability_not_event_date": {"executed_lines": [13, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12, "executed_branches": [], "missing_branches": []}, "test_audit_rejects_future_data": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35, "executed_branches": [], "missing_branches": []}, "test_apply_symbol_lifecycle_keeps_delisted_history": {"executed_lines": [42, 48, 51, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 2, 4, 5, 12, 35, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 12, 13, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 42, 48, 51, 52], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_universe.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [], "missing_branches": [], "functions": {"test_historical_universe_refuses_survivorship_fallback": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10, "executed_branches": [], "missing_branches": []}, "test_historical_universe_allows_explicit_current_fallback": {"executed_lines": [22, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21, "executed_branches": [], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 21], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 12, 21, 22, 30, 31], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}}, "tests\\test_v2_contract_branches.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": [], "functions": {"fp": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42, "executed_branches": [], "missing_branches": []}, "test_market_event_base_and_simple_event_negative_contracts": {"executed_lines": [57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56, "executed_branches": [[77, 78], [77, 80]], "missing_branches": []}, "_bar": {"executed_lines": [111, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110, "executed_branches": [], "missing_branches": []}, "test_bar_contract_rejects_each_structural_violation": {"executed_lines": [128, 129, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127, "executed_branches": [[138, -127], [138, 139]], "missing_branches": []}, "_snapshot": {"executed_lines": [144, 149, 150], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143, "executed_branches": [], "missing_branches": []}, "test_book_snapshot_and_delta_negative_contracts": {"executed_lines": [154, 173, 174, 175, 177, 185, 194, 195, 196], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[173, 174], [173, 177], [194, -153], [194, 195]], "missing_branches": []}, "test_funding_corporate_action_status_and_payload_branches": {"executed_lines": [200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199, "executed_branches": [[200, 201], [200, 208], [229, 230], [229, 232]], "missing_branches": []}, "instrument_spec": {"executed_lines": [244, 267, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243, "executed_branches": [], "missing_branches": []}, "test_reference_contract_negative_branches_and_serializers": {"executed_lines": [272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271, "executed_branches": [[286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 42, 56, 110, 127, 143, 153, 199, 243, 271], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 32, 34, 35, 38, 39, 42, 43, 56, 57, 58, 59, 60, 65, 66, 71, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 92, 93, 100, 101, 110, 111, 123, 124, 127, 128, 129, 138, 139, 140, 143, 144, 149, 150, 153, 154, 173, 174, 175, 177, 185, 194, 195, 196, 199, 200, 201, 202, 208, 209, 216, 221, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 243, 244, 267, 268, 271, 272, 273, 274, 286, 287, 288, 290, 299, 300, 301, 302, 303, 305, 316, 317, 323, 324, 325, 326], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 16, "num_partial_branches": 0, "covered_branches": 16, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[77, 78], [77, 80], [138, -127], [138, 139], [173, 174], [173, 177], [194, -153], [194, 195], [200, 201], [200, 208], [229, 230], [229, 232], [286, 287], [286, 290], [317, 323], [317, 325]], "missing_branches": []}}}, "tests\\test_v2_contracts.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": [], "functions": {"fp": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59, "executed_branches": [], "missing_branches": []}, "event_base": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63, "executed_branches": [], "missing_branches": []}, "test_fixed_point_is_exact_and_utc_is_strict": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77, "executed_branches": [], "missing_branches": []}, "test_instrument_spec_matches_json_and_arrow_contracts": {"executed_lines": [91, 109, 110, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90, "executed_branches": [], "missing_branches": []}, "test_market_clock_uses_explicit_trading_day": {"executed_lines": [117, 127, 128, 129, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116, "executed_branches": [], "missing_branches": []}, "test_trade_and_quote_events_enforce_causal_time": {"executed_lines": [134, 140, 141, 148, 149, 150, 151, 152], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133, "executed_branches": [], "missing_branches": []}, "test_l2_snapshot_and_delta_are_strictly_sequenced": {"executed_lines": [160, 165, 166, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [], "missing_branches": []}, "test_public_json_validation_enforces_event_semantics": {"executed_lines": [187, 193, 194, 195, 196, 197, 199, 200, 201, 202], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [], "missing_branches": []}, "test_public_stream_validation_rejects_duplicate_and_out_of_order_records": {"executed_lines": [206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205, "executed_branches": [], "missing_branches": []}, "test_stream_validation_connects_l2_snapshot_to_first_delta": {"executed_lines": [242, 249, 259, 260, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241, "executed_branches": [], "missing_branches": []}, "test_reference_json_validation_matches_dataclass_semantics": {"executed_lines": [266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265, "executed_branches": [], "missing_branches": []}, "test_all_event_arrow_schemas_require_sequence_and_l2_lists_require_items": {"executed_lines": [286, 297, 298, 299, 300], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285, "executed_branches": [[286, 297], [286, 298]], "missing_branches": []}, "test_asset_specific_events_match_registered_schemas": {"executed_lines": [304, 310, 311, 318, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303, "executed_branches": [[318, -303], [318, 323]], "missing_branches": []}, "test_bitemporal_join_never_uses_future_knowledge": {"executed_lines": [327, 334, 344, 345, 346], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326, "executed_branches": [], "missing_branches": []}, "test_all_frozen_v2_golden_records_match_json_and_arrow_field_contracts": {"executed_lines": [350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349, "executed_branches": [[367, -349], [367, 368]], "missing_branches": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 63, 77, 90, 116, 133, 159, 186, 205, 241, 265, 285, 303, 326, 349], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [], "missing_branches": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 38, 39, 55, 56, 59, 60, 63, 64, 77, 78, 79, 80, 81, 82, 83, 84, 90, 91, 109, 110, 111, 112, 113, 116, 117, 127, 128, 129, 130, 133, 134, 140, 141, 148, 149, 150, 151, 152, 159, 160, 165, 166, 174, 175, 176, 186, 187, 193, 194, 195, 196, 197, 199, 200, 201, 202, 205, 206, 207, 208, 210, 211, 212, 213, 215, 216, 217, 218, 220, 229, 230, 231, 232, 234, 235, 236, 237, 238, 241, 242, 249, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 272, 274, 275, 276, 277, 279, 280, 281, 282, 285, 286, 297, 298, 299, 300, 303, 304, 310, 311, 318, 323, 326, 327, 334, 344, 345, 346, 349, 350, 351, 352, 366, 367, 368, 369], "summary": {"covered_lines": 135, "num_statements": 135, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 6, "num_partial_branches": 0, "covered_branches": 6, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1, "executed_branches": [[286, 297], [286, 298], [318, -303], [318, 323], [367, -349], [367, 368]], "missing_branches": []}}}, "tools\\benchmark_capture_v2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 91, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 132, 133, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 148, 149, 150, 151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170, 171, 172, 174, 177, 178, 179, 180, 181, 182, 183, 185, 186, 197, 219, 220, 223, 228, 233, 234, 235, 238, 240, 241, 242, 243, 244, 245, 246, 247, 259, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 201, "num_statements": 324, "percent_covered": 62.121212121212125, "percent_covered_display": "62", "missing_lines": 123, "excluded_lines": 0, "percent_statements_covered": 62.03703703703704, "percent_statements_covered_display": "62", "num_branches": 72, "num_partial_branches": 9, "covered_branches": 45, "missing_branches": 27, "percent_branches_covered": 62.5, "percent_branches_covered_display": "62"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131, 173, 194, 221, 224, 225, 226, 229, 230, 269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286, 296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308, 443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139], [149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174], [186, -185], [241, 242], [241, 243], [312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123], [172, 173], [186, 194], [278, 279], [278, 280], [281, 282], [281, 283], [302, 303], [302, 304], [364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]], "functions": {"ProviderBatchingExecutor.__init__": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62, "executed_branches": [], "missing_branches": []}, "ProviderBatchingExecutor.submit": {"executed_lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [88], "excluded_lines": [], "start_line": 73, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89]], "missing_branches": [[82, 87], [87, 88]]}, "ProviderBatchingExecutor._flush_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [92, 93, 94], "excluded_lines": [], "start_line": 91, "executed_branches": [], "missing_branches": [[93, -91], [93, 94]]}, "ProviderBatchingExecutor._launch_locked": {"executed_lines": [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 121], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96, "executed_branches": [[99, 100], [99, 101], [101, 102], [101, 103]], "missing_branches": []}, "ProviderBatchingExecutor._launch_locked.complete": {"executed_lines": [109, 110, 111, 112, 114, 115, 116, 117, 118, 119], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91", "num_branches": 6, "num_partial_branches": 1, "covered_branches": 5, "missing_branches": 1, "percent_branches_covered": 83.33333333333333, "percent_branches_covered_display": "83"}, "missing_lines": [113], "excluded_lines": [], "start_line": 108, "executed_branches": [[112, 118], [115, 116], [115, 117], [118, -108], [118, 119]], "missing_branches": [[112, 113]]}, "ProviderBatchingExecutor.shutdown": {"executed_lines": [124, 125, 126, 127, 128, 129, 132, 133, 134], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82", "num_branches": 10, "num_partial_branches": 2, "covered_branches": 6, "missing_branches": 4, "percent_branches_covered": 60.0, "percent_branches_covered_display": "60"}, "missing_lines": [130, 131], "excluded_lines": [], "start_line": 123, "executed_branches": [[126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134]], "missing_branches": [[129, 130], [130, 131], [130, 132], [132, -123]]}, "ProviderBatchingExecutor.assert_quiescent": {"executed_lines": [137, 138, 139], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136, "executed_branches": [[138, -136], [138, 139]], "missing_branches": []}, "BenchmarkTiming.mark_workload_completed": {"executed_lines": [149, 150, 151], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148, "executed_branches": [[149, 150], [149, 151]], "missing_branches": []}, "BenchmarkTiming.mark_pool_closed": {"executed_lines": [154, 155, 156], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153, "executed_branches": [[154, 155], [154, 156]], "missing_branches": []}, "BenchmarkTiming.workload_seconds": {"executed_lines": [160, 161, 162], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159, "executed_branches": [[160, 161], [160, 162]], "missing_branches": []}, "BenchmarkTiming.worker_teardown_seconds": {"executed_lines": [166, 167, 168], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165, "executed_branches": [[166, 167], [166, 168]], "missing_branches": []}, "BenchmarkTiming.total_wall_seconds": {"executed_lines": [172, 174], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [173], "excluded_lines": [], "start_line": 171, "executed_branches": [[172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario.__post_init__": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 185, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221], "excluded_lines": [], "start_line": 220, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [224, 225, 226], "excluded_lines": [], "start_line": 223, "executed_branches": [], "missing_branches": []}, "BenchmarkClock.sleep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [229, 230], "excluded_lines": [], "start_line": 228, "executed_branches": [], "missing_branches": []}, "FixtureHttp.__init__": {"executed_lines": [235, 238], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234, "executed_branches": [], "missing_branches": []}, "FixtureHttp.get": {"executed_lines": [241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [269, 270, 271, 272], "excluded_lines": [], "start_line": 263, "executed_branches": [], "missing_branches": []}, "FixtureConnection.send": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [275], "excluded_lines": [], "start_line": 274, "executed_branches": [], "missing_branches": []}, "FixtureConnection.receive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [278, 279, 280, 281, 282, 283], "excluded_lines": [], "start_line": 277, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnection.close": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [286], "excluded_lines": [], "start_line": 285, "executed_branches": [], "missing_branches": []}, "FixtureConnector.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [296, 297, 298, 299], "excluded_lines": [], "start_line": 290, "executed_branches": [], "missing_branches": []}, "FixtureConnector.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "_book_levels": {"executed_lines": [312, 313, 314, 315, 316], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311, "executed_branches": [[312, 313], [312, 314]], "missing_branches": []}, "_update_levels": {"executed_lines": [329, 330, 331, 332], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322, "executed_branches": [[330, 331], [330, 332]], "missing_branches": []}, "_messages": {"executed_lines": [338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 8, "num_partial_branches": 1, "covered_branches": 7, "missing_branches": 1, "percent_branches_covered": 87.5, "percent_branches_covered_display": "88"}, "missing_lines": [], "excluded_lines": [], "start_line": 335, "executed_branches": [[339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432]], "missing_branches": [[364, 366]]}, "_expected_normalized_rows": {"executed_lines": [436, 437, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435, "executed_branches": [], "missing_branches": []}, "_percentile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [443, 444, 445, 446, 447], "excluded_lines": [], "start_line": 442, "executed_branches": [], "missing_branches": [[443, 444], [443, 445]]}, "_event_loop_sampler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [451, 452, 453, 454, 455, 456, 457], "excluded_lines": [], "start_line": 450, "executed_branches": [], "missing_branches": [[453, -450], [453, 454]]}, "_git_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [461, 468, 477], "excluded_lines": [], "start_line": 460, "executed_branches": [], "missing_branches": []}, "_run_benchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [485, 486, 487, 488, 489, 494, 495, 496, 502, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601], "excluded_lines": [], "start_line": 480, "executed_branches": [], "missing_branches": [[494, 495], [494, 496]]}, "_run_benchmark.identity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [503], "excluded_lines": [], "start_line": 502, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "excluded_lines": [], "start_line": 693, "executed_branches": [], "missing_branches": [[699, 700], [699, 701]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 322, 335, 435, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 89, "num_statements": 90, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.88888888888889, "percent_statements_covered_display": "99", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [718], "excluded_lines": [], "start_line": 1, "executed_branches": [[717, -1]], "missing_branches": [[717, 718]]}}, "classes": {"ProviderBatchingExecutor": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 121, 124, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 139], "summary": {"covered_lines": 58, "num_statements": 65, "percent_covered": 83.15789473684211, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 89.23076923076923, "percent_statements_covered_display": "89", "num_branches": 30, "num_partial_branches": 5, "covered_branches": 21, "missing_branches": 9, "percent_branches_covered": 70.0, "percent_branches_covered_display": "70"}, "missing_lines": [88, 92, 93, 94, 113, 130, 131], "excluded_lines": [], "start_line": 59, "executed_branches": [[74, 75], [74, 76], [82, 83], [87, 89], [99, 100], [99, 101], [101, 102], [101, 103], [112, 118], [115, 116], [115, 117], [118, -108], [118, 119], [126, 127], [126, 128], [129, 132], [132, 133], [133, -123], [133, 134], [138, -136], [138, 139]], "missing_branches": [[82, 87], [87, 88], [93, -91], [93, 94], [112, 113], [129, 130], [130, 131], [130, 132], [132, -123]]}, "BenchmarkTiming": {"executed_lines": [149, 150, 151, 154, 155, 156, 160, 161, 162, 166, 167, 168, 172, 174], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 92.0, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93", "num_branches": 10, "num_partial_branches": 1, "covered_branches": 9, "missing_branches": 1, "percent_branches_covered": 90.0, "percent_branches_covered_display": "90"}, "missing_lines": [173], "excluded_lines": [], "start_line": 143, "executed_branches": [[149, 150], [149, 151], [154, 155], [154, 156], [160, 161], [160, 162], [166, 167], [166, 168], [172, 174]], "missing_branches": [[172, 173]]}, "BenchmarkScenario": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [194], "excluded_lines": [], "start_line": 178, "executed_branches": [[186, -185]], "missing_branches": [[186, 194]]}, "BenchmarkClock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [221, 224, 225, 226, 229, 230], "excluded_lines": [], "start_line": 219, "executed_branches": [], "missing_branches": []}, "FixtureHttp": {"executed_lines": [235, 238, 241, 242, 243, 244, 245, 246, 247, 259], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233, "executed_branches": [[241, 242], [241, 243]], "missing_branches": []}, "FixtureConnection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 4, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [269, 270, 271, 272, 275, 278, 279, 280, 281, 282, 283, 286], "excluded_lines": [], "start_line": 262, "executed_branches": [], "missing_branches": [[278, 279], [278, 280], [281, 282], [281, 283]]}, "FixtureConnector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [296, 297, 298, 299, 302, 303, 304, 305, 306, 307, 308], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": [[302, 303], [302, 304]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 38, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 73, 91, 96, 123, 136, 142, 143, 144, 145, 146, 148, 153, 158, 159, 164, 165, 170, 171, 177, 178, 179, 180, 181, 182, 183, 185, 197, 219, 220, 223, 228, 233, 234, 240, 262, 263, 274, 277, 285, 289, 290, 301, 311, 312, 313, 314, 315, 316, 322, 329, 330, 331, 332, 335, 338, 339, 340, 341, 342, 343, 344, 364, 365, 366, 367, 368, 402, 403, 404, 432, 435, 436, 437, 438, 439, 442, 450, 460, 480, 693, 717], "summary": {"covered_lines": 118, "num_statements": 203, "percent_covered": 57.77777777777778, "percent_covered_display": "58", "missing_lines": 85, "excluded_lines": 0, "percent_statements_covered": 58.12807881773399, "percent_statements_covered_display": "58", "num_branches": 22, "num_partial_branches": 2, "covered_branches": 12, "missing_branches": 10, "percent_branches_covered": 54.54545454545455, "percent_branches_covered_display": "55"}, "missing_lines": [443, 444, 445, 446, 447, 451, 452, 453, 454, 455, 456, 457, 461, 468, 477, 485, 486, 487, 488, 489, 494, 495, 496, 502, 503, 505, 513, 514, 515, 530, 531, 532, 533, 534, 538, 539, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 564, 565, 566, 567, 568, 569, 570, 571, 574, 577, 578, 579, 580, 583, 594, 600, 601, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 718], "excluded_lines": [], "start_line": 1, "executed_branches": [[312, 313], [312, 314], [330, 331], [330, 332], [339, 340], [339, 368], [341, 342], [341, 367], [364, 365], [402, 403], [402, 432], [717, -1]], "missing_branches": [[364, 366], [443, 444], [443, 445], [453, -450], [453, 454], [494, 495], [494, 496], [699, 700], [699, 701], [717, 718]]}}}, "tools\\benchmark_normalized_l2.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 180, 181, 182, 183, 184, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 164, "num_statements": 215, "percent_covered": 73.51778656126483, "percent_covered_display": "74", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 76.27906976744185, "percent_statements_covered_display": "76", "num_branches": 38, "num_partial_branches": 10, "covered_branches": 22, "missing_branches": 16, "percent_branches_covered": 57.89473684210526, "percent_branches_covered_display": "58"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [187, -186], [187, 188], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]], "functions": {"synthetic_l2_events": {"executed_lines": [57, 59, 85, 86], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [58], "excluded_lines": [], "start_line": 55, "executed_branches": [[57, 59], [85, -55], [85, 86]], "missing_branches": [[57, 58]]}, "_repeat": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105, "executed_branches": [], "missing_branches": []}, "synthetic_l2_batches": {"executed_lines": [111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92", "num_branches": 6, "num_partial_branches": 2, "covered_branches": 4, "missing_branches": 2, "percent_branches_covered": 66.66666666666667, "percent_branches_covered_display": "67"}, "missing_lines": [112, 114], "excluded_lines": [], "start_line": 109, "executed_branches": [[111, 113], [113, 115], [128, -109], [128, 129]], "missing_branches": [[111, 112], [113, 114]]}, "_PeakRssSampler.__init__": {"executed_lines": [180, 181, 182, 183, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler._sample": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "_PeakRssSampler.__enter__": {"executed_lines": [191, 192], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190, "executed_branches": [], "missing_branches": []}, "_PeakRssSampler.__exit__": {"executed_lines": [195, 196, 197], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194, "executed_branches": [], "missing_branches": []}, "_profile_storage_stages": {"executed_lines": [202, 217, 222, 225, 229, 231, 232, 243, 244, 245, 247, 248], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 4, "num_partial_branches": 0, "covered_branches": 4, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201, "executed_branches": [[229, 231], [229, 244], [247, -200], [247, 248]], "missing_branches": []}, "_profile_storage_stages.measured": {"executed_lines": [235, 236, 237, 239, 240, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232, "executed_branches": [], "missing_branches": []}, "_git_identity": {"executed_lines": [252, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251, "executed_branches": [], "missing_branches": []}, "_git_identity.git": {"executed_lines": [253, 260], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252, "executed_branches": [], "missing_branches": []}, "_tree_bytes": {"executed_lines": [270], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269, "executed_branches": [], "missing_branches": []}, "_disk_roots": {"executed_lines": [274, 280, 281, 282, 284, 285, 286], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88", "num_branches": 4, "num_partial_branches": 1, "covered_branches": 3, "missing_branches": 1, "percent_branches_covered": 75.0, "percent_branches_covered_display": "75"}, "missing_lines": [283], "excluded_lines": [], "start_line": 273, "executed_branches": [[281, 282], [281, 286], [282, 284]], "missing_branches": [[282, 283]]}, "_disk_usage": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289, "executed_branches": [], "missing_branches": []}, "_run_once_independent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [308, 309, 329, 330, 331, 335, 336, 337], "excluded_lines": [], "start_line": 301, "executed_branches": [], "missing_branches": [[330, 331], [330, 335]]}, "_run_once": {"executed_lines": [347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89", "num_branches": 4, "num_partial_branches": 2, "covered_branches": 2, "missing_branches": 2, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [369, 389], "excluded_lines": [], "start_line": 340, "executed_branches": [[368, 370], [388, 390]], "missing_branches": [[368, 369], [388, 389]]}, "run_benchmark": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73", "num_branches": 8, "num_partial_branches": 3, "covered_branches": 3, "missing_branches": 5, "percent_branches_covered": 37.5, "percent_branches_covered_display": "38"}, "missing_lines": [428, 430, 467, 468, 469, 470, 471], "excluded_lines": [], "start_line": 414, "executed_branches": [[427, 429], [429, 431], [466, 472]], "missing_branches": [[427, 428], [429, 430], [466, 467], [468, 469], [468, 470]]}, "_parser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 0, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554], "excluded_lines": [], "start_line": 534, "executed_branches": [], "missing_branches": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 0, "missing_branches": 2, "percent_branches_covered": 0.0, "percent_branches_covered_display": "0"}, "missing_lines": [558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593], "excluded_lines": [], "start_line": 557, "executed_branches": [], "missing_branches": [[565, 566], [565, 576]]}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 105, 109, 178, 179, 186, 190, 194, 200, 201, 251, 269, 273, 289, 301, 340, 414, 534, 557, 596], "summary": {"covered_lines": 57, "num_statements": 58, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.27586206896552, "percent_statements_covered_display": "98", "num_branches": 2, "num_partial_branches": 1, "covered_branches": 1, "missing_branches": 1, "percent_branches_covered": 50.0, "percent_branches_covered_display": "50"}, "missing_lines": [597], "excluded_lines": [], "start_line": 1, "executed_branches": [[596, -1]], "missing_branches": [[596, 597]]}}, "classes": {"_PeakRssSampler": {"executed_lines": [180, 181, 182, 183, 184, 187, 188, 191, 192, 195, 196, 197], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100", "num_branches": 2, "num_partial_branches": 0, "covered_branches": 2, "missing_branches": 0, "percent_branches_covered": 100.0, "percent_branches_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178, "executed_branches": [[187, -186], [187, 188]], "missing_branches": []}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 38, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 57, 59, 85, 86, 105, 106, 109, 111, 113, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 138, 145, 155, 172, 178, 179, 186, 190, 194, 200, 201, 202, 217, 222, 225, 229, 231, 232, 235, 236, 237, 239, 240, 241, 243, 244, 245, 247, 248, 251, 252, 253, 260, 262, 269, 270, 273, 274, 280, 281, 282, 284, 285, 286, 289, 290, 301, 340, 347, 348, 349, 358, 359, 360, 368, 370, 371, 372, 380, 388, 390, 391, 392, 393, 414, 427, 429, 431, 432, 433, 434, 435, 436, 440, 449, 453, 454, 455, 458, 464, 465, 466, 472, 531, 534, 557, 596], "summary": {"covered_lines": 152, "num_statements": 203, "percent_covered": 71.96652719665272, "percent_covered_display": "72", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 74.8768472906404, "percent_statements_covered_display": "75", "num_branches": 36, "num_partial_branches": 10, "covered_branches": 20, "missing_branches": 16, "percent_branches_covered": 55.55555555555556, "percent_branches_covered_display": "56"}, "missing_lines": [58, 112, 114, 283, 308, 309, 329, 330, 331, 335, 336, 337, 369, 389, 428, 430, 467, 468, 469, 470, 471, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 549, 554, 558, 559, 560, 565, 566, 573, 574, 575, 576, 588, 589, 590, 591, 592, 593, 597], "excluded_lines": [], "start_line": 1, "executed_branches": [[57, 59], [85, -55], [85, 86], [111, 113], [113, 115], [128, -109], [128, 129], [229, 231], [229, 244], [247, -200], [247, 248], [281, 282], [281, 286], [282, 284], [368, 370], [388, 390], [427, 429], [429, 431], [466, 472], [596, -1]], "missing_branches": [[57, 58], [111, 112], [113, 114], [282, 283], [330, 331], [330, 335], [368, 369], [388, 389], [427, 428], [429, 430], [466, 467], [468, 469], [468, 470], [565, 566], [565, 576], [596, 597]]}}}}, "totals": {"covered_lines": 13093, "num_statements": 13950, "percent_covered": 92.59105469213429, "percent_covered_display": "93", "missing_lines": 857, "excluded_lines": 34, "percent_statements_covered": 93.85663082437276, "percent_statements_covered_display": "94", "num_branches": 2908, "num_partial_branches": 256, "covered_branches": 2516, "missing_branches": 392, "percent_branches_covered": 86.51994497936727, "percent_branches_covered_display": "87"}} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/pip-check-sha256-9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09.txt b/validation/m7-capture-remediation-v5/artifacts/pip-check-sha256-9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09.txt new file mode 100644 index 0000000..c688d8c --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/pip-check-sha256-9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09.txt @@ -0,0 +1 @@ +No broken requirements found. diff --git a/validation/m7-capture-remediation-v5/artifacts/pytest-hardexit-junit-sha256-c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml b/validation/m7-capture-remediation-v5/artifacts/pytest-hardexit-junit-sha256-c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml new file mode 100644 index 0000000..da8cbb7 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/pytest-hardexit-junit-sha256-c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/pytest-main-junit-sha256-1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml b/validation/m7-capture-remediation-v5/artifacts/pytest-main-junit-sha256-1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml new file mode 100644 index 0000000..7ebf554 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/pytest-main-junit-sha256-1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml @@ -0,0 +1 @@ +H:\Documents\ChatGPT\temp\puresaber-quant-platform\.worktrees\quant-data-kit-m7\tests\test_m2_audit_regressions.py:209: POSIX symbolic-link regression \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/ruff-check-sha256-82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18.txt b/validation/m7-capture-remediation-v5/artifacts/ruff-check-sha256-82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18.txt new file mode 100644 index 0000000..1f5f344 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/ruff-check-sha256-82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18.txt @@ -0,0 +1 @@ +All checks passed! diff --git a/validation/m7-capture-remediation-v5/artifacts/ruff-format-sha256-cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315.txt b/validation/m7-capture-remediation-v5/artifacts/ruff-format-sha256-cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315.txt new file mode 100644 index 0000000..71987fb --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/ruff-format-sha256-cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315.txt @@ -0,0 +1 @@ +92 files already formatted diff --git a/validation/m7-capture-remediation-v5/artifacts/sparse-round-01-sha256-f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110.json b/validation/m7-capture-remediation-v5/artifacts/sparse-round-01-sha256-f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110.json new file mode 100644 index 0000000..d65d367 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/sparse-round-01-sha256-f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.189745272072015,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.189745272072015},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:45:23.548657Z","report_sha256":"6f61010f1deae0a2940abf5330bb232bffa346b464d906037aee36ebf9528620","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.9543492999982846,"event_loop_delay_p95_milliseconds":15.009400001872564,"event_loop_delay_p99_milliseconds":15.967600000294624,"event_loop_delay_samples":441,"last_epoch_submit_seconds":4.542404199997691,"normalization_group_window_seconds":2.408501599998999,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1149.208884287991,"throughput_websocket_messages_per_second":575.1796217657612,"total_wall_seconds":7.015719799997896,"worker_teardown_seconds":0.06137049999961164,"workload_elapsed_seconds":6.9543492999982846},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/sparse-round-02-sha256-ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758.json b/validation/m7-capture-remediation-v5/artifacts/sparse-round-02-sha256-ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758.json new file mode 100644 index 0000000..c960464 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/sparse-round-02-sha256-ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.2266767859422805,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.226676785942281},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:45:37.227730Z","report_sha256":"c76195a8ec09b62055fab059568edff23f6720c3c370053c8dbffd8c47e73dc6","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.918809499999043,"event_loop_delay_p95_milliseconds":15.038199999253266,"event_loop_delay_p99_milliseconds":15.44590000048629,"event_loop_delay_samples":439,"last_epoch_submit_seconds":4.531997300000512,"normalization_group_window_seconds":2.3789876000009826,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1155.112017465014,"throughput_websocket_messages_per_second":578.1341428753825,"total_wall_seconds":6.977733199997601,"worker_teardown_seconds":0.05892369999855873,"workload_elapsed_seconds":6.918809499999043},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/artifacts/sparse-round-03-sha256-116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350.json b/validation/m7-capture-remediation-v5/artifacts/sparse-round-03-sha256-116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350.json new file mode 100644 index 0000000..5d9b643 --- /dev/null +++ b/validation/m7-capture-remediation-v5/artifacts/sparse-round-03-sha256-116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350.json @@ -0,0 +1 @@ +{"collector_commit":"13e004a80296bb3a49c4bd54e64cb64670e56b01","fixture":{"archive_restore_verified_segments":16,"capabilities":["btc-spot-l2","btc-usdt-perpetual-l2","eth-spot-l2","eth-usdt-perpetual-l2"],"expected_normalized_rows":7992,"messages_per_stream":500,"normalized_accepted_rows":7992,"normalized_rows_per_websocket_message":1.998,"providers":["binance","okx"],"raw_frames_including_https_snapshots":4004,"raw_segments":16,"stream_results":[{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-spot-ethusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-btcusdt-l2","websocket_messages":500},{"accepted_rows":1001,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"binance-usdt-perpetual-ethusdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-btc-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-spot-eth-usdt-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-btc-usdt-swap-l2","websocket_messages":500},{"accepted_rows":997,"archived_segments":2,"errors":[],"outcome":"BOUNDED_COMPLETE","raw_segments":2,"stream_id":"okx-usdt-perpetual-eth-usdt-swap-l2","websocket_messages":500}],"streams":8,"websocket_messages":4000},"gate":{"maximum_event_loop_p99_milliseconds":100.0,"minimum_throughput_messages_per_second":240.0,"minimum_throughput_normalized_rows_per_second":479.52,"normalized_rows_safety_multiple":7.169885562892608,"passed":true,"rationale":"The frozen eight streams at 100 ms imply 80 messages/s. Both message and scenario-density Normalized-row throughput require at least 3x live offer-rate headroom while including Raw segment publication, Normalized publication, archive copy and restore hash. The capacity gate ends only after every stream report is complete and the batching executor is quiescent; one-time worker process teardown is reported separately and the pool is still fully closed.","target_live_normalized_rows_per_second_at_scenario_density":159.84,"target_live_offer_rate_messages_per_second":80.0,"throughput_safety_multiple":7.169885562892608},"machine":{"hostname":"DESKTOP-A0OTR0G","logical_cpu_count":16,"normalization_process_workers":4,"normalization_strategy":"provider-batched durable epochs","platform":"Windows-11-10.0.22631-SP0","processor":"AMD64 Family 25 Model 97 Stepping 2, AuthenticAMD","python":"3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)]"},"measured_at":"2026-08-30T13:45:52.098945Z","report_sha256":"57cfecab945d481e22bbda1b4365a9bf04b01f34b298526daf8032681bc6fb7e","repository":"H:\\Documents\\ChatGPT\\temp\\puresaber-quant-platform\\.worktrees\\quant-data-kit-m7","result":{"elapsed_seconds":6.9736119999979564,"event_loop_delay_p95_milliseconds":15.02710000204388,"event_loop_delay_p99_milliseconds":15.168000001722248,"event_loop_delay_samples":442,"last_epoch_submit_seconds":4.555970899997192,"normalization_group_window_seconds":2.419568099998287,"raw_normalized_archive_consistent":true,"run_status":"BOUNDED_PROBE_COMPLETE","throughput_normalized_rows_per_second":1146.0345083727545,"throughput_websocket_messages_per_second":573.5908450314087,"total_wall_seconds":7.037153599998419,"worker_teardown_seconds":0.0635416000004625,"workload_elapsed_seconds":6.9736119999979564},"scenario":{"binance_configured_snapshot_depth_basis":"REST limit=1000 per side","binance_snapshot_levels_per_side":1,"delta_levels_per_side":1,"description":"One bid and one ask per snapshot/update; retained compatibility baseline.","name":"sparse","okx_configured_snapshot_depth_basis":"books channel representative depth=400 per side","okx_snapshot_levels_per_side":1},"schema_version":"puresaber.m7-offline-capture-benchmark@1.2.0","scope":"OFFLINE_FIXTURE_NOT_NETWORK","working_tree_dirty":false} \ No newline at end of file diff --git a/validation/m7-capture-remediation-v5/evidence-manifest.json b/validation/m7-capture-remediation-v5/evidence-manifest.json new file mode 100644 index 0000000..f2c0c2f --- /dev/null +++ b/validation/m7-capture-remediation-v5/evidence-manifest.json @@ -0,0 +1,42 @@ +{ + "schema_version": "puresaber.m7-capture-core-remediation-evidence@5.0.0", + "source_commit": "13e004a80296bb3a49c4bd54e64cb64670e56b01", + "source_working_tree_dirty": false, + "package_version": "0.7.4", + "requirements_lock_sha256": "fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88", + "certification": { + "software_fixture": "PASS_PENDING_INDEPENDENT_VALIDATION", + "performance": "PASS_PENDING_INDEPENDENT_VALIDATION", + "public_network": "NOT_RUN_CAPACITY_BLOCKED", + "continuous_days": 0, + "market_data_certified": false + }, + "quality": { + "pytest_passed": 431, + "pytest_skipped": 1, + "pytest_failed": 0, + "mutually_exclusive_partitions": 2, + "source_branch_coverage": "2217/2546=87.08%", + "epoch_branch_coverage": "251/276=90.94%", + "configured_core_modules_at_least_90_percent": true + }, + "artifacts": [ + {"label":"dense-round-01","path":"artifacts/dense-round-01-sha256-8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495.json","sha256":"8b4f2d99d24736e38c85abd69ba28a2d89f1de9219f8a511bba66df5b2321495","bytes":4579}, + {"label":"dense-round-02","path":"artifacts/dense-round-02-sha256-20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866.json","sha256":"20e0e3e8d823972dc1d8dec8e4338d99ea3fbc25c9dc081fb0012144d1373866","bytes":4583}, + {"label":"dense-round-03","path":"artifacts/dense-round-03-sha256-d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273.json","sha256":"d45348f2fa977fe14385418bc21d4b726d0bdb54a51184ecc4e96495f857d273","bytes":4584}, + {"label":"sparse-round-01","path":"artifacts/sparse-round-01-sha256-f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110.json","sha256":"f31e83c7009b7ccf644089f7de9a915b97f190e344a7e99dc1c14abf55efd110","bytes":4409}, + {"label":"sparse-round-02","path":"artifacts/sparse-round-02-sha256-ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758.json","sha256":"ca2ff1126dd95dd44fa69b3c09a75ad51ee16461ade9559ffac98b2cf8d2b758","bytes":4408}, + {"label":"sparse-round-03","path":"artifacts/sparse-round-03-sha256-116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350.json","sha256":"116aa5a0cce03ff88116101afe8c220c4b59b124c5ee90225458ba7e01708350","bytes":4408}, + {"label":"full-coverage","path":"artifacts/full-coverage-sha256-00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3.json","sha256":"00222ca157daae8f664230ee98013bd6dfca915e0643cc17de6c139cdce999b3","bytes":1183221}, + {"label":"pytest-main-junit","path":"artifacts/pytest-main-junit-sha256-1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd.xml","sha256":"1b1e0f393ec9317a79515e88ee3814ccedd4e70ab7ca5f447be026fbaa3b75dd","bytes":63381}, + {"label":"pytest-hardexit-junit","path":"artifacts/pytest-hardexit-junit-sha256-c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8.xml","sha256":"c9f8d4b08d447d40e55ab8e33ba222c31e3ae4becbfe4a993b8d3dfbf8e1fac8","bytes":395}, + {"label":"branch-gates","path":"artifacts/branch-gates-sha256-b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf.txt","sha256":"b1817f2ab26f32c12a00e037b0a2da206d96d79d273bdd2b5dcc08cb19611bdf","bytes":1234}, + {"label":"pip-check","path":"artifacts/pip-check-sha256-9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09.txt","sha256":"9261363b733079a641c2e4cc9bc46ffa1d8336945a87f807b6cf68847dbc9b09","bytes":30}, + {"label":"ruff-check","path":"artifacts/ruff-check-sha256-82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18.txt","sha256":"82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18","bytes":19}, + {"label":"ruff-format","path":"artifacts/ruff-format-sha256-cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315.txt","sha256":"cafa7c5a1693e3113785dde7c8ea539245576e1e61cf368219dab32d2dba8315","bytes":27}, + {"label":"data-10m-3run","path":"artifacts/data-10m-3run-sha256-4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958.json","sha256":"4bce19a9f6094fe26232dac5c2b94163e0595e3800488b559c194e1878db6958","bytes":24538}, + {"label":"capacity-preflight-refusal","path":"artifacts/capacity-preflight-refusal-sha256-14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643.json","sha256":"14a316e9e0064ecb021fb4d5e5c888db0fc7d5adb62dd13639754d9be9a81643","bytes":6583}, + {"label":"capacity-run-refusal","path":"artifacts/capacity-run-refusal-sha256-c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5.json","sha256":"c9fe225f7112d275b68db2766272a7420559968901e4d05696b1541c0c00aff5","bytes":6583}, + {"label":"cli-invocation-results","path":"artifacts/cli-invocation-results-sha256-3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df.json","sha256":"3abfdf43353d176c830aceb541599614881b1a3861f05bdda080a8ffb87475df","bytes":1563} + ] +} diff --git a/validation/m7-capture-remediation-v5/summary.md b/validation/m7-capture-remediation-v5/summary.md new file mode 100644 index 0000000..42e39eb --- /dev/null +++ b/validation/m7-capture-remediation-v5/summary.md @@ -0,0 +1,103 @@ +# M7 epoch journal-binding remediation candidate evidence + +## Decision boundary + +- Source commit:`13e004a80296bb3a49c4bd54e64cb64670e56b01`; every source-dependent run + recorded a clean working tree and package`0.7.4`. +- Branch:`codex/cross-asset-v2-m7-data-performance`; PR`PureSaber/quant-data-kit#6` + remains open, unmerged and untagged. +- This candidate supersedes the failed software/fixture decision from + `validation/m7-capture-remediation-v4`; historical evidence is unchanged. +- Software, deterministic fixture and local performance gates pass pending exact-head GitHub CI + and a new independent read-only validation. Public network capture,30-day retention and domestic + market-data certification remain unperformed. +- No credentials, authenticated endpoint, account route, order route, live order or cleanup was + used. + +## Closed independent findings + +Recovery no longer accepts a merely self-consistent snapshot with matching provider, venue, row +count and Raw references. It replays the current sealed epoch journal through the same strict Arrow +and L2 validation path, recomputes every logical partition's identity, row count and canonical row +digest, the available-time maximum and the final L2 checkpoint set, then compares those values to +the loaded snapshot. A negative test creates a second valid same-lineage/same-row-count snapshot, +rewrites and rehashes the COMMITTED receipt, and proves reconciliation rejects the rebind. + +PREPARED, COMMITTED, explicit ABORTED and retryable failure JSON objects now have closed field sets. +Unknown or missing fields fail closed. Hashes, snapshot IDs, attempts, row counts, exception, +message, restart instruction, retryable flags and abort reasons have strict non-coercing types. +Sequential artifact filenames must encode the payload attempt exactly; receipt and abort filenames +must match their complete content hash exactly. + +The prior real spawned-process crash boundary, independent stream identity anchor, terminal-state +conflict rules, Raw lineage gates and bootstrap-lock reparse protections remain covered. The +historical v4 candidate is not promoted by this evidence. + +## Quality gates + +Environment: isolated`.venv-m7-verify`, Python3.12.5, package0.7.4, +`requirements.lock`SHA-256 +`fac9239809b2bb42c2d7ee99417a3053075a177eb9b08131a954288566de6d88`. + +| Gate | Result | +|---|---| +|`pip check` | PASS;no broken requirements | +|`ruff check .` | PASS | +|`ruff format --check .` | PASS;92 files unchanged | +| Mutually exclusive pytest partitions | PASS;431 passed,0 failed,1 existing platform skip | +| Full source pure branch coverage | PASS;2217/2546=87.08%,required>=80% | +| Every configured core module | PASS;all17 modules>=90% | +|`capture_v2/epoch.py` |251/276=90.94% | +|`capture_v2/collector.py` |85/94=90.43% | +|`capture_v2/storage.py` |125/136=91.91% | + +The main partition has430 passes, one existing skip and one deliberately deselected native +hard-exit case. The isolated partition executes that one case and passes. Together they cover the +full collection without overlap. + +## Deterministic eight-stream capture benchmarks + +Every fixture round includes Raw frames, Raw publication, Normalized publication, archive copy, +restore-hash verification and complete worker shutdown. Reports bind the exact source commit, +`working_tree_dirty=false`, consistency true and gate true. + +| Scenario | Rounds | Messages/round | Normalized rows/round | Messages/s | p99 | Safety multiple | +|---|---:|---:|---:|---:|---:|---:| +| Dense20+20 levels/update |3 |8,000 |319,688 |310.60/299.17/309.99 |37.73/36.54/36.97ms |3.88/3.74/3.87x | +| Sparse1+1 level/update |3 |4,000 |7,992 |575.18/578.13/573.59 |15.97/15.45/15.17ms |7.19/7.23/7.17x | + +All rounds pass the240messages/s, scenario-density3x and100ms p99 gates. The slowest Dense round is +about2.3% below the previous candidate's slowest round, within the15% regression limit. + +## Three independent10-million-event runs + +All runs execute in independent processes, accept all10,000,000 events, quarantine0, pass strict +reload and deterministic artifact comparison, and retain3,310,487,778bytes without cleanup. + +| Run | Events/s | Peak RSS | Result | +|---:|---:|---:|---| +|1 |188,411.35 |3.11GiB | PASS | +|2 |188,473.94 |3.10GiB | PASS | +|3 |182,097.14 |3.14GiB | PASS | + +Minimum throughput remains82.1% above the100,000events/s gate and peak memory remains below16GiB. + +## Capacity refusal + +Installed`qdk-capture.exe`was invoked in safe`preflight`mode and explicit +`run --confirm-long-running`mode. Both returned exit code2 and immutable +`PAUSED_PREFLIGHT_FAILED`reports before network startup. After the150GiB reserve, projected archive +capacity was about56.36GB versus the199,710,735,564-byte floor. All eight streams report0WebSocket +messages and`long_running_capture_started=false`. + +## Remaining certification risks + +- GitHub Python3.10/3.11/3.12 CI and a new independent read-only verdict are required before this + candidate can pass software/fixture acceptance. +- Public Binance/OKX TLS, reconnect/resync and real-message quality remain capacity-blocked. +- Current archive capacity cannot support the retained30-day eight-stream run. +- Legally authorized domestic L2 remains unavailable and fixture-certified only. +- Journal-to-snapshot validation intentionally rereads immutable journal and snapshot rows at + startup; future scale work may add a safe cache, but cannot weaken semantic recomputation. + +All17 artifacts are content-addressed and byte-preserved by the local`.gitattributes`. diff --git a/validation/m7-capture-remediation-v5/technical-handoff.md b/validation/m7-capture-remediation-v5/technical-handoff.md new file mode 100644 index 0000000..707f894 --- /dev/null +++ b/validation/m7-capture-remediation-v5/technical-handoff.md @@ -0,0 +1,58 @@ +# M7 epoch journal-binding remediation technical handoff + +## 1. Scope and acceptance conditions + +Scope is the two P2 findings from the independent v4 review: + +1. bind a COMMITTED or failure snapshot to the actual logical content of the current sealed journal; +2. enforce closed fields, strict types and exact filename/attempt binding for every durable state. + +Acceptance also retains the existing crash, path, lineage, quality, performance, capacity and +determinism gates. Public network capture,30-day retention, domestic real-market certification and +all order activity are excluded. + +## 2. Modified files + +Source commit`13e004a80296bb3a49c4bd54e64cb64670e56b01`modifies: + +-`src/quant_data_kit/capture_v2/epoch.py`:closed state schemas, exact filename binding and + deterministic journal-to-snapshot content verification. +-`tests/test_capture_v2_remediation.py`:valid-snapshot rebind reproduction, unknown/malformed + terminal fields, filename attempt mismatch and helper branch tests. +-`src/quant_data_kit/_version.py`and`tests/test_m2_integration.py`:package0.7.4. +-`README.md`and`docs/m7-crypto-l2-capture.md`:operator-facing invariants. + +The evidence-only follow-up adds`validation/m7-capture-remediation-v5`. Rollback is a Git revert; +no tag movement, history rewrite, data migration or deletion is required. + +## 3. Test commands, results and evidence + +Executed command families: + +```text +.venv-m7-verify/Scripts/python -m pip check +.venv-m7-verify/Scripts/python -m ruff check . +.venv-m7-verify/Scripts/python -m ruff format --check . +.venv-m7-verify/Scripts/python -m coverage run --branch -m pytest tests --deselect= --junitxml= +.venv-m7-verify/Scripts/python -m coverage run --append --branch -m pytest --junitxml= +.venv-m7-verify/Scripts/python tools/check_branch_coverage.py +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario dense-burst --messages-per-stream 1000 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_capture_v2.py --scenario sparse --messages-per-stream 500 --output-dir +.venv-m7-verify/Scripts/python tools/benchmark_normalized_l2.py --rows 10000000 --runs 3 --batch-rows 262144 --minimum-events-per-second 100000 --maximum-peak-rss-gib 16 ... +.venv-m7-verify/Scripts/qdk-capture.exe --mode preflight +.venv-m7-verify/Scripts/qdk-capture.exe --mode run --confirm-long-running +``` + +Results:431 passed,1 existing platform skip,0 failures; all17 core modules exceed90% pure branch +coverage and all source is87.08%; all six capture rounds pass; all three10M runs pass strict reload, +determinism, throughput, memory and retention gates; both CLI calls exit2 before network startup and +report0WebSocket messages. Exact files, hashes and byte lengths are in`evidence-manifest.json`. + +## 4. Remaining risks and dependencies + +- Independent validation and exact evidence-head GitHub CI remain release gates. +- Provision archive capacity above the150GiB reserve and20%/100GiB floor before any public probe. +- After capacity passes, execute bounded public probes, then retained30-day capture, restore drill + and cross-source quality review. +- Obtain legally authorized domestic L2 before real-market domestic certification. +- Preserve semantic journal/snapshot recomputation if startup validation is later optimized.